{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     1.0\n",
       "1     3.0\n",
       "2     4.0\n",
       "3     NaN\n",
       "4    44.0\n",
       "5     1.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s = pd.Series([1,3,4,np.nan,44,1])\n",
    "s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2020-02-19', '2020-02-20', '2020-02-21', '2020-02-22',\n",
       "               '2020-02-23', '2020-02-24'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dates = pd.date_range('20200219', periods=6)\n",
    "dates"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-02-19</th>\n",
       "      <td>-0.799985</td>\n",
       "      <td>0.245600</td>\n",
       "      <td>-0.221267</td>\n",
       "      <td>-0.410729</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-02-20</th>\n",
       "      <td>1.125316</td>\n",
       "      <td>0.821806</td>\n",
       "      <td>-1.200230</td>\n",
       "      <td>0.133751</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-02-21</th>\n",
       "      <td>0.334592</td>\n",
       "      <td>0.956041</td>\n",
       "      <td>0.261985</td>\n",
       "      <td>-1.354693</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-02-22</th>\n",
       "      <td>0.432335</td>\n",
       "      <td>0.095326</td>\n",
       "      <td>0.106564</td>\n",
       "      <td>-0.791690</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-02-23</th>\n",
       "      <td>1.597411</td>\n",
       "      <td>-0.963982</td>\n",
       "      <td>0.792672</td>\n",
       "      <td>1.321550</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-02-24</th>\n",
       "      <td>0.289869</td>\n",
       "      <td>-0.065950</td>\n",
       "      <td>2.063530</td>\n",
       "      <td>-0.414396</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   a         b         c         d\n",
       "2020-02-19 -0.799985  0.245600 -0.221267 -0.410729\n",
       "2020-02-20  1.125316  0.821806 -1.200230  0.133751\n",
       "2020-02-21  0.334592  0.956041  0.261985 -1.354693\n",
       "2020-02-22  0.432335  0.095326  0.106564 -0.791690\n",
       "2020-02-23  1.597411 -0.963982  0.792672  1.321550\n",
       "2020-02-24  0.289869 -0.065950  2.063530 -0.414396"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randn(6, 4),\n",
    "                  index=dates,\n",
    "                  columns=['a', 'b', 'c', 'd'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   0  1   2   3\n",
       "0  0  1   2   3\n",
       "1  4  5   6   7\n",
       "2  8  9  10  11"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1 = pd.DataFrame(np.arange(12).reshape(3,4))\n",
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "      <th>F</th>\n",
       "      <th>G</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2018-02-01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>foo</td>\n",
       "      <td>test</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>2018-02-01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>foo</td>\n",
       "      <td>train</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>2018-02-01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>foo</td>\n",
       "      <td>test</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>2018-02-01</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>foo</td>\n",
       "      <td>train</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   A          B    D  E    F      G\n",
       "0  1 2018-02-01  1.0  3  foo   test\n",
       "1  1 2018-02-01  1.0  3  foo  train\n",
       "2  1 2018-02-01  1.0  3  foo   test\n",
       "3  1 2018-02-01  1.0  3  foo  train"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2 = pd.DataFrame({\n",
    "    'A':1,\n",
    "    'B':pd.Timestamp('20180201'),\n",
    "    'D':pd.Series(1,index=list(range(4)),dtype='float'),\n",
    "    'E':pd.array([3]*4,dtype='int32'),\n",
    "    'F':'foo',\n",
    "    'G':pd.Categorical([\"test\",\"train\",\"test\",\"train\"])\n",
    "}) \n",
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "A             int64\n",
      "B    datetime64[ns]\n",
      "D           float64\n",
      "E             int32\n",
      "F            object\n",
      "G          category\n",
      "dtype: object\n",
      "Int64Index([0, 1, 2, 3], dtype='int64')\n",
      "Index(['A', 'B', 'D', 'E', 'F', 'G'], dtype='object')\n",
      "[[1 Timestamp('2018-02-01 00:00:00') 1.0 3 'foo' 'test']\n",
      " [1 Timestamp('2018-02-01 00:00:00') 1.0 3 'foo' 'train']\n",
      " [1 Timestamp('2018-02-01 00:00:00') 1.0 3 'foo' 'test']\n",
      " [1 Timestamp('2018-02-01 00:00:00') 1.0 3 'foo' 'train']]\n",
      "         A    D    E\n",
      "count  4.0  4.0  4.0\n",
      "mean   1.0  1.0  3.0\n",
      "std    0.0  0.0  0.0\n",
      "min    1.0  1.0  3.0\n",
      "25%    1.0  1.0  3.0\n",
      "50%    1.0  1.0  3.0\n",
      "75%    1.0  1.0  3.0\n",
      "max    1.0  1.0  3.0\n"
     ]
    }
   ],
   "source": [
    "print(df2.dtypes)\n",
    "print(df2.index)\n",
    "print(df2.columns)\n",
    "print(df2.values)\n",
    "print(df2.describe())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "       G    F  E    D          B  A\n",
      "0   test  foo  3  1.0 2018-02-01  1\n",
      "1  train  foo  3  1.0 2018-02-01  1\n",
      "2   test  foo  3  1.0 2018-02-01  1\n",
      "3  train  foo  3  1.0 2018-02-01  1\n",
      "   A          B    D  E    F      G\n",
      "3  1 2018-02-01  1.0  3  foo  train\n",
      "2  1 2018-02-01  1.0  3  foo   test\n",
      "1  1 2018-02-01  1.0  3  foo  train\n",
      "0  1 2018-02-01  1.0  3  foo   test\n",
      "   A          B    D  E    F      G\n",
      "0  1 2018-02-01  1.0  3  foo   test\n",
      "2  1 2018-02-01  1.0  3  foo   test\n",
      "1  1 2018-02-01  1.0  3  foo  train\n",
      "3  1 2018-02-01  1.0  3  foo  train\n"
     ]
    }
   ],
   "source": [
    "print(df2.sort_index(axis=1,ascending=False))#行 从大到小\n",
    "print(df2.sort_index(axis=0,ascending=False))\n",
    "print(df2.sort_values(by='G'))#值排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#pandas选择数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-01</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-04</th>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>14</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-05</th>\n",
       "      <td>16</td>\n",
       "      <td>17</td>\n",
       "      <td>18</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>20</td>\n",
       "      <td>21</td>\n",
       "      <td>22</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             A   B   C   D\n",
       "2020-01-01   0   1   2   3\n",
       "2020-01-02   4   5   6   7\n",
       "2020-01-03   8   9  10  11\n",
       "2020-01-04  12  13  14  15\n",
       "2020-01-05  16  17  18  19\n",
       "2020-01-06  20  21  22  23"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dates = pd.date_range('20200101',periods=6)\n",
    "df3 = pd.DataFrame(np.arange(24).reshape(6 ,4),index=dates,columns=['A','B','C','D'])\n",
    "df3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2020-01-01     0\n",
      "2020-01-02     4\n",
      "2020-01-03     8\n",
      "2020-01-04    12\n",
      "2020-01-05    16\n",
      "2020-01-06    20\n",
      "Freq: D, Name: A, dtype: int64 2020-01-01     0\n",
      "2020-01-02     4\n",
      "2020-01-03     8\n",
      "2020-01-04    12\n",
      "2020-01-05    16\n",
      "2020-01-06    20\n",
      "Freq: D, Name: A, dtype: int64\n",
      "            A  B   C   D\n",
      "2020-01-01  0  1   2   3\n",
      "2020-01-02  4  5   6   7\n",
      "2020-01-03  8  9  10  11\n",
      "A    4\n",
      "B    5\n",
      "C    6\n",
      "D    7\n",
      "Name: 2020-01-02 00:00:00, dtype: int64\n",
      "             A   B\n",
      "2020-01-01   0   1\n",
      "2020-01-02   4   5\n",
      "2020-01-03   8   9\n",
      "2020-01-04  12  13\n",
      "2020-01-05  16  17\n",
      "2020-01-06  20  21\n",
      "7\n",
      "13\n",
      "             B   C\n",
      "2020-01-02   5   6\n",
      "2020-01-04  13  14\n",
      "2020-01-06  21  22\n",
      "             A   B   C   D\n",
      "2020-01-04  12  13  14  15\n",
      "2020-01-05  16  17  18  19\n",
      "2020-01-06  20  21  22  23\n"
     ]
    }
   ],
   "source": [
    "print(df3['A'],df3.A)\n",
    "print(df3[0:3])  #前3行\n",
    "\n",
    "#select by label:loc\n",
    "print(df3.loc['20200102']) #index对应的值\n",
    "print(df3.loc[:,['A','B']]) #所有行的AB两列\n",
    "print(df3.loc['20200102']['D'])\n",
    "\n",
    "#select by position:iloc\n",
    "print(df3.iloc[3,1]) #第三行第一个的值\n",
    "print(df3.iloc[[1,3,5],1:3])\n",
    "\n",
    "#mixed selection:ix  弃用了\n",
    "#print(df3.ix[:3,['A','C']])\n",
    "\n",
    "#Boolean indexing\n",
    "print(df3[df3.A>8])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>F</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-01</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>0</td>\n",
       "      <td>222</td>\n",
       "      <td>111</td>\n",
       "      <td>11</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-04</th>\n",
       "      <td>0</td>\n",
       "      <td>13</td>\n",
       "      <td>14</td>\n",
       "      <td>15</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-05</th>\n",
       "      <td>0</td>\n",
       "      <td>17</td>\n",
       "      <td>18</td>\n",
       "      <td>19</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>0</td>\n",
       "      <td>21</td>\n",
       "      <td>22</td>\n",
       "      <td>23</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            A    B    C   D   F  E\n",
       "2020-01-01  0    1    2   3 NaN  1\n",
       "2020-01-02  0    5    6   7 NaN  2\n",
       "2020-01-03  0  222  111  11 NaN  3\n",
       "2020-01-04  0   13   14  15 NaN  4\n",
       "2020-01-05  0   17   18  19 NaN  5\n",
       "2020-01-06  0   21   22  23 NaN  6"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3.iloc[2,2] = 111\n",
    "df3.loc['20200103','B'] = 222\n",
    "df3.A[df3.A>0] = 0\n",
    "df3['E'] = pd.Series([1,2,3,4,5,6],index=pd.date_range('20200101',periods=6))\n",
    "df3['F'] = np.nan\n",
    "df3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-01</th>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>4</td>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>8</td>\n",
       "      <td>9.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-04</th>\n",
       "      <td>12</td>\n",
       "      <td>13.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-05</th>\n",
       "      <td>16</td>\n",
       "      <td>17.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>20</td>\n",
       "      <td>21.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             A     B     C   D\n",
       "2020-01-01   0   NaN   2.0   3\n",
       "2020-01-02   4   5.0   NaN   7\n",
       "2020-01-03   8   9.0  10.0  11\n",
       "2020-01-04  12  13.0  14.0  15\n",
       "2020-01-05  16  17.0  18.0  19\n",
       "2020-01-06  20  21.0  22.0  23"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 处理丢失数据\n",
    "dates = pd.date_range('20200101',periods=6)\n",
    "df4 = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=['A','B','C','D'])\n",
    "df4.iloc[0,1] = np.nan\n",
    "df4.iloc[1,2] = np.nan\n",
    "df4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             A     B     C   D\n",
      "2020-01-03   8   9.0  10.0  11\n",
      "2020-01-04  12  13.0  14.0  15\n",
      "2020-01-05  16  17.0  18.0  19\n",
      "2020-01-06  20  21.0  22.0  23\n",
      "             A     B     C   D\n",
      "2020-01-01   0   NaN   2.0   3\n",
      "2020-01-02   4   5.0   NaN   7\n",
      "2020-01-03   8   9.0  10.0  11\n",
      "2020-01-04  12  13.0  14.0  15\n",
      "2020-01-05  16  17.0  18.0  19\n",
      "2020-01-06  20  21.0  22.0  23\n",
      "            A    B    C  D\n",
      "2020-01-01  0  1.0  0.0  0\n",
      "2020-01-02  0  0.0  1.0  0\n",
      "2020-01-03  0  0.0  0.0  0\n",
      "2020-01-04  0  0.0  0.0  0\n",
      "2020-01-05  0  0.0  0.0  0\n",
      "2020-01-06  0  0.0  0.0  0\n",
      "2.0\n"
     ]
    }
   ],
   "source": [
    "print(df4.dropna(axis=0,how='any')) #how={'any','all'} 行\n",
    "print(df4.dropna(axis=1,how='all')) #how={'any','all'} 列\n",
    "#print(df4.fillna(value=0))\n",
    "df4[df4.isnull()==False]=0\n",
    "df4[df4.isnull()==True]=1\n",
    "print(df4)\n",
    "print(np.sum(np.sum(df4,axis=0)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "parser_f() missing 1 required positional argument: 'filepath_or_buffer'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-115-18809bc9d833>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m#读表\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_pickle\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mTypeError\u001b[0m: parser_f() missing 1 required positional argument: 'filepath_or_buffer'"
     ]
    }
   ],
   "source": [
    "#读表\n",
    "data = pd.read_csv()\n",
    "data.to_pickle()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     a    b    c    d\n",
      "0  0.0  0.0  0.0  0.0\n",
      "1  0.0  0.0  0.0  0.0\n",
      "2  0.0  0.0  0.0  0.0\n",
      "3  1.0  1.0  1.0  1.0\n",
      "4  1.0  1.0  1.0  1.0\n",
      "5  1.0  1.0  1.0  1.0\n",
      "6  2.0  2.0  2.0  2.0\n",
      "7  2.0  2.0  2.0  2.0\n",
      "8  2.0  2.0  2.0  2.0\n",
      "     a    b    c    d\n",
      "1  0.0  0.0  0.0  0.0\n",
      "2  0.0  0.0  0.0  0.0\n",
      "3  0.0  0.0  0.0  0.0\n",
      "     b    c    d    e\n",
      "2  1.0  1.0  1.0  1.0\n",
      "3  1.0  1.0  1.0  1.0\n",
      "4  1.0  1.0  1.0  1.0\n",
      "     b    c    d\n",
      "1  0.0  0.0  0.0\n",
      "2  0.0  0.0  0.0\n",
      "3  0.0  0.0  0.0\n",
      "2  1.0  1.0  1.0\n",
      "3  1.0  1.0  1.0\n",
      "4  1.0  1.0  1.0\n",
      "     a    b    c    d\n",
      "0  0.0  0.0  0.0  0.0\n",
      "1  0.0  0.0  0.0  0.0\n",
      "2  0.0  0.0  0.0  0.0\n",
      "3  1.0  1.0  1.0  1.0\n",
      "4  1.0  1.0  1.0  1.0\n",
      "5  1.0  1.0  1.0  1.0\n",
      "6  2.0  2.0  2.0  2.0\n",
      "7  2.0  2.0  2.0  2.0\n",
      "8  2.0  2.0  2.0  2.0\n",
      "     a    b    c    d\n",
      "0  0.0  0.0  0.0  0.0\n",
      "1  0.0  0.0  0.0  0.0\n",
      "2  0.0  0.0  0.0  0.0\n",
      "3  1.0  1.0  1.0  1.0\n",
      "4  1.0  1.0  1.0  1.0\n",
      "5  1.0  1.0  1.0  1.0\n",
      "6  2.0  2.0  2.0  2.0\n",
      "7  2.0  2.0  2.0  2.0\n",
      "8  2.0  2.0  2.0  2.0\n",
      "9  1.0  2.0  3.0  4.0\n"
     ]
    }
   ],
   "source": [
    "#合并 concatenating\n",
    "df5 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])\n",
    "df6 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])\n",
    "df7 = pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])\n",
    "\n",
    "#上下合并\n",
    "res = pd.concat([df5,df6,df7],axis=0,ignore_index=True)#列改变  上下合并\n",
    "print(res)\n",
    "\n",
    "#join,['inner','outer']\n",
    "df8 = pd.DataFrame(np.ones((3,4))*0,index=[1,2,3],columns=['a','b','c','d'])\n",
    "df9 = pd.DataFrame(np.ones((3,4))*1,index=[2,3,4],columns=['b','c','d','e'])\n",
    "print(df8)\n",
    "print(df9)\n",
    "res1 = pd.concat([df8,df9],join='inner',)#相同的合并 默认outer\n",
    "print(res1)\n",
    "\n",
    "#join_axes  弃用\n",
    "#res2 = pd.concat([df8,df9],axis=1,join_axes=[df8.index]) #左右合并\n",
    "#print(res2)\n",
    "\n",
    "#append\n",
    "res3 = df5.append([df6,df7],ignore_index=True)\n",
    "print(res)\n",
    "s1 = pd.Series([1,2,3,4],index=['a','b','c','d'])\n",
    "res3=res3.append(s1,ignore_index=True)\n",
    "print(res3)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  key   A   B\n",
      "0  K0  A0  B0\n",
      "1  K1  A1  B1\n",
      "2  K2  A2  B2\n",
      "3  K3  A3  B3\n",
      "  key   C   D\n",
      "0  K0  C0  D0\n",
      "1  K1  C1  D1\n",
      "2  K2  C2  D2\n",
      "3  K3  C3  D3\n",
      "  key   A   B   C   D\n",
      "0  K0  A0  B0  C0  D0\n",
      "1  K1  A1  B1  C1  D1\n",
      "2  K2  A2  B2  C2  D2\n",
      "3  K3  A3  B3  C3  D3\n"
     ]
    }
   ],
   "source": [
    "#合并 merge\n",
    "left = pd.DataFrame({'key':['K0','K1','K2','K3'],\n",
    "                     'key2':['K0','K0','K0','K0'],\n",
    "                     'A':['A0','A1','A2','A3'],\n",
    "                     'B':['B0','B1','B2','B3']})\n",
    "right = pd.DataFrame({'key':['K0','K1','K2','K3'],\n",
    "                      'key2':['K0','K0','K0','K0'],\n",
    "                     'C':['C0','C1','C2','C3'],\n",
    "                     'D':['D0','D1','D2','D3']})\n",
    "print(left)\n",
    "print(right)\n",
    "res = pd.merge(left,right,on='key')\n",
    "print(res)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  key key2   A   B\n",
      "0  K0   K0  A0  B0\n",
      "1  K0   K1  A1  B1\n",
      "2  K1   K0  A2  B2\n",
      "3  K2   K1  A3  B3\n",
      "  key key2   C   D\n",
      "0  K0   K0  C0  D0\n",
      "1  K1   K0  C1  D1\n",
      "2  K1   K0  C2  D2\n",
      "3  K2   K0  C3  D3\n",
      "  key key2    A    B   C   D      _merge\n",
      "0  K0   K0   A0   B0  C0  D0        both\n",
      "1  K1   K0   A2   B2  C1  D1        both\n",
      "2  K1   K0   A2   B2  C2  D2        both\n",
      "3  K2   K0  NaN  NaN  C3  D3  right_only\n",
      "  key key2    A    B   C   D indicator_column\n",
      "0  K0   K0   A0   B0  C0  D0             both\n",
      "1  K1   K0   A2   B2  C1  D1             both\n",
      "2  K1   K0   A2   B2  C2  D2             both\n",
      "3  K2   K0  NaN  NaN  C3  D3       right_only\n"
     ]
    }
   ],
   "source": [
    "left2 = pd.DataFrame({'key':['K0','K0','K1','K2'],\n",
    "                     'key2':['K0','K1','K0','K1'],\n",
    "                     'A':['A0','A1','A2','A3'],\n",
    "                     'B':['B0','B1','B2','B3']})\n",
    "right2 = pd.DataFrame({'key':['K0','K1','K1','K2'],\n",
    "                      'key2':['K0','K0','K0','K0'],\n",
    "                     'C':['C0','C1','C2','C3'],\n",
    "                     'D':['D0','D1','D2','D3']})\n",
    "print(left2)\n",
    "print(right2)\n",
    "#how = ['left','right','inner','outer']\n",
    "res = pd.merge(left2,right2,on=['key','key2'],how='right',indicator=True)#默认inner\n",
    "res2 = pd.merge(left2,right2,on=['key','key2'],how='right',indicator='indicator_column')#默认inner\n",
    "print(res)\n",
    "print(res2)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     A   B\n",
      "K0  A0  B0\n",
      "K1  A1  B1\n",
      "K2  A2  B2\n",
      "     C   D\n",
      "K0  C0  D0\n",
      "K2  C2  D2\n",
      "K3  C3  D3\n",
      "      A    B    C    D\n",
      "K0   A0   B0   C0   D0\n",
      "K1   A1   B1  NaN  NaN\n",
      "K2   A2   B2   C2   D2\n",
      "K3  NaN  NaN   C3   D3\n"
     ]
    }
   ],
   "source": [
    "left3 = pd.DataFrame({'A':['A0','A1','A2'],\n",
    "                     'B':['B0','B1','B2']},\n",
    "                     index=['K0','K1','K2'])\n",
    "right3 = pd.DataFrame({'C':['C0','C2','C3'],\n",
    "                     'D':['D0','D2','D3']},\n",
    "                     index=['K0','K2','K3'])\n",
    "print(left3)\n",
    "print(right3)\n",
    "res = pd.merge(left3,right3,left_index=True,right_index=True,how='outer')\n",
    "print(res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    k  age\n",
      "0  K0    1\n",
      "1  K1    2\n",
      "2  K2    3\n",
      "    k  age\n",
      "0  K0    4\n",
      "1  K0    5\n",
      "2  K3    6\n",
      "    k  age_boy  age_girl\n",
      "0  K0      1.0       4.0\n",
      "1  K0      1.0       5.0\n",
      "2  K1      2.0       NaN\n",
      "3  K2      3.0       NaN\n",
      "4  K3      NaN       6.0\n"
     ]
    }
   ],
   "source": [
    "#suffixes\n",
    "boys = pd.DataFrame({'k':['K0','K1','K2'],'age':[1,2,3]})\n",
    "girls = pd.DataFrame({'k':['K0','K0','K3'],'age':[4,5,6]})\n",
    "print(boys)\n",
    "print(girls)\n",
    "res = pd.merge(boys,girls,on='k',suffixes=['_boy','_girl'],how='outer')\n",
    "print(res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAD4CAYAAAAJmJb0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO2dd5gb1fX3v1dd2r7etb3uvWMbvBRTjAEDBtOSQAJJCCXEkJCQnof6CyGNNwkBAiTEIUAogdAcCKYaTDG4sMbduHttr9dle1e/7x8zdzQzGtWVVu18nmeflaZoRiPpzLnnnvM9jHMOgiAIIj8xZfoECIIgiPRBRp4gCCKPISNPEASRx5CRJwiCyGPIyBMEQeQxlkyfgJqqqio+ZsyYTJ8GQRBETrFu3bpmznm10bqsMvJjxoxBXV1dpk+DIAgip2CM7Y+0jsI1BEEQeQwZeYIgiDyGjDxBEEQekxIjzxh7nDF2jDG2RbXsbsbYIcbYBvnvwlQciyAIgoifVHnyTwJYaLD8fs75bPnvjRQdiyAIgoiTlBh5zvlHAFpT8VoEQRBE6kh3TP77jLFNcjinwmgDxthixlgdY6yuqakpzadDEARRWKTTyP8NwHgAswEcBnCf0Uac8yWc81rOeW11tWEuP0EQBGHAzqNdeHldQ9Rt0lYMxTk/Kh4zxv4B4PV0HYsgCKLQOOMP7+Nga1/M7dLmyTPGalRPvwRgS6RtCYIgiPhx+wJxGXggRZ48Y+w5APMBVDHGGgD8EsB8xthsABxAPYAbU3EsgiCIQqet1xv3tikx8pzzqwwW/zMVr00QBEFoaevxxb0tVbwSBEHkGIl48mTkCYIgcowud8iTXzB1cNRtycgTBEHkGB5/UHlsMUU342TkCYIgcgy1kefgUbclI08QBJFjeNVGPrqNz67OUARBEER0pt71FspdVuV5DBtPRp4gCCJX8AeC6PMF0NcRUJYV2cxR96FwDUEQRI7gVoVpBDecMS7qPuTJEwRB5AgPvb9LeWw1M+z8zQVgjEXdhzx5giCIHCAY5Pj7h3uV5/4gj2ngATLyBEEQOYEvqA3VxMqqEZCRJwiCyAG8BvH4eCAjTxAEkQOQkScIgshjfAFtfObeLx8X136UXUMQBJEDqD35ZbecjunDyuLajzx5giCIHMAbkIz8hMHFmDSkJO79UmLkGWOPM8aOMca2qJZVMsbeZYztkv9XpOJYBEEQhYjw5H923mRYzfGb7lR58k8CWKhbdiuA9zjnEwG8Jz8nCIIgkkB48jZL7Nx4NSkx8pzzjwC06hZfCuBf8uN/AbgsFcciwgkGuaaJAEEQ+YdPGHlzdK0aPemMyQ/hnB+WHx8BMMRoI8bYYsZYHWOsrqmpKY2nk7/8+IUNmPWrd3C0053pUyEIIk2IcI3NkpjZHpCJV845RwRFTM75Es55Lee8trq6eiBOJ68IBjle3dCIIAeOdXoyfToEQaQJYeSt5gyEayJwlDFWAwDy/2NpPFbB0ucLGD4mCCK/CMXks8eTfw3ANfLjawC8msZjFSz/763tymMy8gSRvzR3SyP1Cpctof1SlUL5HIBVACYzxhoYY98GcC+AcxljuwAskJ8TKeapVfuVx24y8gSRtxxs7YPVzDCk1JHQfimpeOWcXxVh1TmpeH0iPsjIE0T+crijDzVlTphN2ROTJwYYMvIEkb94fEE4rYmlTwJk5POKPi8ZeYLIV/zBICwJZtYAZOTzCqP+jwRB5Af+IIclwVANQEY+r+j1+DN9CgRBpAl/gMOSgGaNgIx8jrFufytO/t1ydPRJMgYldguuP20sShwWdLrJyBNEvuIPBhOedAXIyOcMxzrdONTehz+9vRNHOz3Y3NABAOjx+uG0mVDmtCqGnyCI/MMf4AlXuwIF1jTkjc2HMX1YKUYPKsr0qSTMoodWoqnLg6piOwDgyU/rcdvSTQhyYGSFC+UuMvIEkc/4gxwuE4VrIuL2BfC9Zz/H1/+xJtOnkhRNXVK1m6h6W/7FURxs7QMAXDJ7GHnyBJHn+INBWClcE5n9Lb0AkJOGkHOOaJ+ty2ZBqcOKzhx8bwSRaW59eRP+veZApk8jJv4Ap5h8NBraJCM/qDgx3YdsoMcbQJADZ04KV+kUH7rTaobbT3nyBJEoz392ELcv3Zzp04iJP8gT6gglKJiYvBDvSvw+mHlEamRNWbhmxQs3zgUA2K1muH2UJ08Q8eILBHNK1C8QTM6TLxgj75ENYIAbytpnNT1yJetQnZH/zhljMWe01DrXbjHBk0NfWILINL94aROWrj+U6dOIG18gSMVQ0fDI1aCBQO4Z+V6v5MkP1anPlTmtymO71UQVrwSRALlk4AHJkydZgygI8a4A56irb8Wxruxuldfc7cExuZ3f7mPdAIAhsicvbuYTh5Qo2zssZnj9QfAcHKkQRCY4fUKV5nlbj9dwu+4sqST3BTjMlEIZGeHJ+wMclz+6Cl965NMMn5ExnHPc/+5O1P5mOU763XsAgB8+vwGA5LnX37sI6+86D3cumooFU0Ntc+1W6aP0kDdPEHFRXWLXPN/Q0B62zeubGjHjl29j1Z6WgTqtiASCwaSKofLayC/484dKapTw5DvdUprhofa+jJ2XwOsP4ron1uJvH+xRlh1s7cOD7+1SnotQDQBFZrTMZcUNZ4zTTMI4LNI6D02+EkRceHUOUY+Bx/5CXQMAYH9Lz4CcUzSyNoWSMVbPGNvMGNvAGKtL9/EEwSDH7mPdSmqU8HB9WRST39fcgxU7mjQt/EQfR8GeY6Evlz1Kb0fhyVMaJUHEh/631usJ/+2IEE5PhmW83b4Aujz+rJ54PYtzPptzXjtAxwv7ALOxocaB1t6wZXpv4tUN0uTQxbOGYVx1ccTXEp58Nr5PgshGwjx5b7gn394nGfnufoj/bWvsxC3PrYc/ED7KPtzRh8l3vok/vb0j6mvc+d8tAIC6/W0JHz9vwzX6sEW2xaoDQY6DKiMvJnf0kzyPrdwHADh7SnghlBqKyRNEYvj0nryBt97ZJ/0eu9zJV5P/8Pn1eG1jI/Y2S6PydfvbsHZfKwDgtlc2w+MP4uEVu6MmTdTL+w4vdyZ8/IEw8hzAO4yxdYyxxfqVjLHFjLE6xlhdU1NTyg6qD1tkWw75Kb9/D/e8vk15/vs3vgAAdEXwGOyW6G2/RCWc3jshCMIYrz+I2tEVuO2CKQDCR9GBIFfm8CL9LuNB/9v8yt8+xVf/vgqA9sZypDNyxl+AcwwuseP3Xz4u4eMPhJE/nXN+AoALANzMGJunXsk5X8I5r+Wc11ZXR/dWE0HvyXd7/BhXFVKfTOaOmEqE4JigpVseFkZI13JYo39UYtbdH8yeOQeCyGa8gSCKHRbceOZ4lDgsYZ58R58Pwrlu6vZgW2MnHli+M+HjiN+mxx9UPHKBOsIuRg1GdPT6cOLYSpQ4rBG3iUTajTzn/JD8/xiApQBOSvcxNzW0Y94fV2iW9Xj9qCiy4d83nIwzJ1WjrdebkfzXNzYfxux73glbPrWmFADQ2uMJWweEYu6RsMj5s0ZxP4IgwvH6g4qXXWSzaDLZAO1vcVtjJy776yd4YPmuhEfL4hgNbb2Y/6cPDNcBQLcnckiovc+HcmfiBh5Is5FnjBUxxkrEYwDnAdiSzmMCwF9X7Alb1u32o9huwakTqnD96WPR6w1kJPf1t8u+QHtv6MMcK48uhNxCY7sbNrMJH//iLM1+9hhd2pUhIRl5gogLbyAIm5yx5rKbNRk0B1t7seDPHwEAFs2swZFOt2LcE81gE1Wq+rRtjz+AlbubMahIEk3sNsjuAaTamY4+H8pdWWjkAQwBsJIxthHAWgDLOOdvpfmY8Og+hGCQo9sjGXkAOHFMBRgDthzqSPephGFUzGC3mJRzbmzvw5gqV5hOTaz8WCVck0UpogSRzfgCQdjUnrxqZP/OtqPK4+OGl2n2SzSDTThgRzq0MffJd0qmUISJjPL0ASmEGwhylDuTU9BNq5HnnO/lnM+S/6Zzzn+bzuMJ9Bkmfb4AejwBFNklb9hls8BiYnjwvV1KE46BQj+B6vVL3oTHJ0kSbDjYjolDSmA1m/Dyd+cq2wVixNpFg19/kDx5gogHrz9k5F02rSev7jvh0NWnJFpwKHLb9UZevz5S+FiM/Muy1JPPCHrD3esNoNvjR5E9JLopjO2K7cfC9t/c0IHn1qaniYBN94WxmBnsFjM8/iBae7w41uXBnFGSsuSc0ZW49tQxABBzqCY8+Wwq9iKIbKbXE4BLdvyK7NqYvLoBj0MXKk1WnliMDmYML9Usf+K6EwFEzsUXN5ysjMlngmCQhxUZHe10o9vjxxCViuM7P5aSfHY3dYe9xsUPr8Rtr2xOi9iXPlxjM5tgt5jg9QcVFcli1c3ojkVT8erNp2F8lEIo6XWlj1Kf+0sQRDjBIEe3148S+bfmtJk12TVqg6838omGa/RWZHqNNvwzc0Q5gMg3D+HJl7uyMFyTCVp7vWHNM7Y2SrF3dQrlsHInhpU5lNRFI9JRylwpT7LMHil9sKdNqII/GMQ7W48oufx2Vbqk1WzCLHnbaIghH8XkCSI2vb4AOAeKHZKRL7KZFVmDXq9f0awBwtOXE23Oo8/GGV3l0jy3mhnMJoa+CPZGRBWydeJ1wBFxrwevnI1Hv3kCAODz/ZK63LjqIs22pTGaXzd3xR+v9wWC+M3r29ASI8ZvMZkwrqoIS793Kt645QzcsWgqjnZ60OXxY2+TlEMbTaMmEsKT/8t7u5SbGkEQxojQSLFdMpwum0WZ+Hx76xHNtv0N16g9/y8dPxxVxVr1S8YYnFaz4ev6A0Es23wYADSRiETIOyMvermOrSrChMFSiGPNvhaYTQyjKrVGvtxlxeo9LWjV6UiXyHf3RCZl3912FI+t3IffvbE96nZufwDFDgsYY5g2rFSTJytCR7GqW40Qr7O3uQdXPLoq4f0JopAQOekiGaPYbkGP1w/OuSbF+Z0fz+t3uEbt+TttZlQahF0cEYy8elmpI7lGfnln5FfvbYXDasKkISWoLpbufPUtvRhe7gyb9Cx32tDl8ePih1Zqlou81cYIs+FGiHherDi+xxeM6Knf+6Z0g0jGk1d3jOn1BjTyxQRBaBE56cKhK3ZYEOTA1sZORV5g+U/mYdKQkjAj/8XhzoSOpU7pdlrNqCwOGfmN/3ceACkk5DYI16iNPGPJdajOKyPPOcfrmw7jzEnVcFjNKHValImVwboGAUDoA9YXKYgc9YMGKpGREBOesbqpu/2BsC/NZ3cs0DyPVfhkhFXXMUYtX0wQhBZ9uEbYgoseWgmPL4gShwUTBkud11y20O/xzEnV+PeaAwklZag9eZfNrDiRQCgtMlK4xu2V9r1z0dS4j6cnr4z84Q43mrs9OH2ipIHDGMOimTUAEBYHAwBrBI9ZFB6J0E88KEbeEv1u2+Pxo8imHXZVFmmHb0nF5GMclyAIYPuRTpx//0f45j/XAAhlsql/k96AdrRdrbId8ydX41iXB2298atSqut2nDYzBpdITuTPz5+sLLdbTXhzyxFsbtDOpwnDP6wfWlt5Y+Q55zj13vcBAONVWTST5D6oRq0RzRGGPz6/dJduNsi8uX3pZrzw2cGw5WIG/f0vjinDs11Hu/CQqssTIKnZFetia/pq1lhiZEZYkuj9SBCFQku3B9c/+RkWPvAxdhztUpYLD16detzl9itFUoA2q0VMfjYm0FlOrYDrtJrhtJmx+7cX4HvzxyvLtxySQkA/eO5zzb7CyDuTGN0L8sYyqCdLptSEig1OHleJMqcVl80eHraP2riqJ1+F/otRpsy/1xzAL17eFLZcxOQbO9z48zuSUt1lj3yC+97dqalk63L7lS9WJJKbeA2/YZFYGUFIPLP6AN43KHwUBZLqivKmLrdm/k7EwkvsFiXse9FDK/HpnmZlmx6PHxc++HGYJw5oPXkxareYTZoYeyRVXJFWqQ/xJkLeGPmjXaFJUnX4Y/qwMmz85Xk4b/rQsH3URv6EX7+rPBZeeYsu60aviaNGHU8TEzciz17E/4SGTiy50GTCNYwx3Pvl4zCyMvRlOZzAxDFB5DP2CKNjkV1z6ezhSvZKU5cnLEnjk1vPxoe/OAuTh5Yoy67+51rl8dr6Vmw73Ik/vK2dCwsEuUY0cFBReNgYAJ77zimYMrQEJl10QaRzOm1k5HG0U/K6X7ppbowtQ5wzdbDhcjF0a9WFa9Qa8Kv2tGju/uq0Kr0scJfbh33NPfjpixsBAMX26B/YIIP5g3i48qRRmDQ49CXU36QIolCJlBAhRs1OmxmPfEOqqzlmYOSHlztRWWRDicOqOGHq378opFJXqwPhhVCRCppGDXJh5ogy9PkCcPsCuH3pZoy5dRme/LReOj/y5IH2XsmgVRTFX/p76vgqvP2jeWHLxZ23S1Z/8wWCeHD5Lmw8GBqKXfWP1XixLhSbV8+g260mjdff5fHj209+hqXrpX6tscIxyXRkF6i/nL0Z0MsniGykT6cVP2tkOc6eonXyhMqjPiYfD6KQqkhn5PUa9dUGWX4CkWHzq/9tw7/XaLWzasqTK4QCgOSy67MQEfdKNNShTq3knIMxBp/q7tvt8WP5tqO436AjjFrrQm3UHVYzGtpCEzNdbj/aVZW1X60dGfF8nrj2xITOX8/JYyvx5hZpiJfpDvMEkS106sS/vnLCcHxr7hjNsjKVAJjek4+FmHfTe/Kfyj0r/nlNLUYPKopateqwmdHnDWDHkfA8/NIkOkIJ8tDIJzasUX+wn+xuwfoDbejzBWAzm+ANBNHl9hlm5gDayU61/OjB1l4caAmlX17z+FrNfkbxtcoiG1p7vEqVbrJcc+oYDCt3YvHT68K8CIIoVDp18iVGsr5qKV9bFDsigjTqAbfoAVukC8UKmZWT4mjd57RKarT6frKXzR4Wdb9Y5E24xkjcKx5Mqk/q1lc24b53d6Kt14cpNVJsu8vtj3jjeFCVHun2BTB9mJTV8+aWI7juyc8SOo+Hrzoex48qT1qfQsAYU1TteiJ0miGIQkM05BboG4EAUvaMmPeMGq6RrXyQA8+u2Q8AaOqWjLl+4lSEfuMZGYiiK73MynWnjY25bzTyx8gnGa4BgHsunQ5Am/sqvgSdfb6IWhXN3V74A0F09Pmwtr7V8NgnjamM6xxOnVCFpd87LeFhohFipECePEFIqJtk/+HymThDLphUYzIxZWQfrx25Y6nUzVQkfujbbwq7FE+MX0yu6hMmklWfFKTdyDPGFjLGdjDGdjPGbk3XcRK5mHrEB6puvnSibJyPdXnCurir6XL7cdPT69Dl9ofdxYH+pT4li0sx8uTJEwSg9eRryiKPluMx8jxMIV6yE0CokFIguk/FozsTKRe+LMlmIYJ0N/I2A3gEwAUApgG4ijE2LR3H8vqlUuRkRHyMwjGnTagCABxs642o8wxIXVs2NkhSxk3dHpw/fYiybs7oCsXgXjyrf3G1RLCaTXBYTehyx196TRD5TLROT2q+dqKUFBFNg2rhjJqwZSK7xhvQ2gqfqll4LEZUuAyXx4rlxyLdE68nAdjNOd8LAIyx5wFcCmCb0cZBzpUMl0Tx+ANJhzqM7trVJXZUuKw41NanaE0Y0dHnQ5nTil5vAE6rGX+/ulYJ71jNJtzy/HoAwJShJfjfxqROLynKnbaoWvkEUUiotWb0dSxq4sli+dMVM/H21iOaHHiRrmzkyRtVoxsxcYhx0kV/UqqB9IdrhgNQC700yMsUGGOLGWN1jLG6rY2deGOzVrA/Xjz+YFJyAED4pMjxo6SJy2KHBb3eAHp9oXjegqlDUO6y4iJZ+Kyjz4dRldId+IErZwOQPAWH1Sx9OPJnXmy34IUb5+K175+W1DkmSrnLmpCIEkHkK11un7Yxd5TkjHj8S7vFrKjbCgPeKzt2+vabXn/8nryRznwqyHgKJed8CYAlAGCvmcj3GPRcjYdoOu2xUA/fnr3hZNSOkRppOyxmuH0BTbhmak0JHrumFkc63Hh902FsP9KJTrcfC6YOxpShpWGvLSZiiuwWnDQ2vknYVFDmtKKDjDxB4GCrVkwsWrhGqFHGmuz857Un4rJHPoEvwHHbK5sV7Sz9xKs3gXCNOtNvytASjKx0oSgFc3rpNvKHAKgrf0bIyyKS7MjE4w8knD4pUBdEiVg8IIkIvbnlCC5RxdNFKfPQMgdGVbqwsaED7b1eJX1ST32z1NJv8pASw/XpotxlVdoJEkQhs3J3k+Z5NDtx0cwaNHb04dpTx0R9zdkjyzFhcDF2H+tWerACETz5JJJB7rpomsYW9Yd0h2s+AzCRMTaWMWYDcCWA16LtkGj/RIHbF4gaa4tGTQQFONEB5rWNjcqygKpZQLnLim63H229XlREuPPfc+kMnDGxClNrBtbIF9ktlF1DEAB2Hu3GUFX9STRP3mI24XvzJ8Bli+3/Hj+yPGyZXqtG8uQTt0uuFGblpdXIc879AL4P4G0AXwB4gXO+Ndo+j6zYo8xUJ0K3J1ynPV5EKfKsEeEFEnqCqjzLIpsFrT1euH1BlEeIp80dPwhPf/tkWJK4m/cHh9UcVTWTIAqFPm8ALlUlarLOoJ57Lp2Br5wwQrNMX62aSExeTTw3mXhJu+XhnL/BOZ/EOR/POf9tPPvUt4TCDE+tqldKg6PR4wmE6UYkwie3no1nv3NKzO3Uo7Eiu0XpHtXfgoVUY7eYNFILBFGo9PkCGs843myXWDhtZtz31VlK4kWRzazRqALk1O4kHLxkHVYjsrLiVUwYNrb34f9e3YrvPFUXc59ujz9MAS4Rhpc747pJBFXhmmK7WclgqU5SHjhdOKxmuGVP3uMP4JnV+zWjEIIoFHq9frisod92sg2xI3GprC1z9tQhmuZFQGITr2oGJaCmG4usNPKiAYiY5Gw26NCkp9vjj6nTngrOmBiaDFHfVM6ZOsRo84xht5jgC3AEghxLPtyLO/+7BS9/3pDp00oLzd0e3P3a1rB4KEEAUrjGaTNrfrup5EcLJmHj/52HkRVOtPd6NU2+e+VjJ0p/OkHpyXgKpRFtPdLdUBj5YByd0Xs8/n6Fa2JRZDPjszsXaGJl4njDyhz9LlhINeJLsr+lR1Hca4rjZpmL/PK1rVi26TBaerx46KrjM306RAb58X82YOGModh1tAsnjxuEE8dUotcbQE2ZGQ99/fiw7JdUYDYxlLmsqCyywR/k6OzzK4qWbl+gXw0/UkFWGXmh/SLCDOJ/NBvf0etDt9ePXm8AxfbUxsWfuPZEfLizCRfNrMGQUkfYZIhoAJCNURBRM3D2fR/ih+dMBAC48zTbRgjL/W9jIxn5AqXX68fjK/dh6fpDSnMeAKi/dxF6vVJM3mo2RZUr6C8j5dh8fUsPZrmkzJs+b2JG/u9Xz0l5fUtWGflpNaVoQcgYiYnDaEZ03h9XKNVs6v6LqeCsKYNx1hTjFoFAqPluNmrEqId7Iib4n7qD+Ml5kzN1SmmjTaXad7C1V/mxEYXBrqNdOPf+jyKu7/MlFzJJlLFVRQCAn7ywAc/ecAqGljnQ6/UndOzzDXpR95esiskzJsltuuXYqlCW5FFceXW58pQUG/lYCGOSjR2Y1KXbwggKOdRMs+Fge0rTOzVdt/6+KmWvS+QG/1pVH3Gdxx9AW68XVQOQGFEhp1HvaerB65uk2hq3L5gRJVo1WWXkASktScgICEMgYvL/XX8IY25dFnEitiJN2g+RmFZTisEldnx3/vgBPW48qHV8Gjv6omw5sOxv6cFlj3yC37z+RUpe78W6g5qMhsNxpNsS+UW0vPfGdjc4x4CM7tTG3Gxi8AeC8AaCFJPX47CYlKpX0Ry7rdeHW1/ehK2NUgVqQ1uf4Z25JIW5pfFgMjGsuf2clKdkpQL1Da+522u4TZ83gEdW7Mb3z56Q0tn8aIgbdN3+tpS83s9f2pSS1yFyl2gyBYfkXssjKoyr2lOJ2pgHglyJSGTayGedJ++wmRWpXvWQ/vnPDqJH7nRkMTHsb+nBD2UZX4EpAxku2WjgAWD84CLlsXrko84uWPLRXjy8YjeeWb1/QM6pzxvAV/4mhVOiheDihSp6CSC6J79dbopdVZz+Ub46w84X4EpnNkeGwzVZ58k7rWZsOdSBU3//Hhp1Q29xV/YGgrhj6Ras3N2ciVPMCaqL7Sh1WNDp9muEynq9AZQ5pXt7t0cKc/gHKD1IVAcDwJ6mbvgDwX7JPRztCN285k+uxgc7mpIWuCNyl2ij0N8sk8KClUUDW6zo9Qfh9koOlYs8eS1Oqxn1Lb1hBh4ITcS6fQFN39WxVUX4+smjBuwccwHGGNbesSBsufq6CZ0NywBZRrdKZsEX4P2On4u5hktnD8Pj15yIUZUuTDaQeybym1gVpYz1v4VeovgCQSXsTBOvOi48Lry11lUnjdQ89/iCSlUsANx+4VT87kvHpf3ccg0jD0coU67a04LnP5P6uQyUke+SRw43nC51nz/W1T8jf7RT2v/7Z02AycRwwqjypMTtiNwm1kjUYmIDXqzoCwSVcA3F5HVcd9qYsGX6StbtR7o0jQAiyfwS4Ygv3mf1rcqygarl6pZHDqKeoT8pnZxz/PD5DQCgVBfaLWaSNiggWuS5Jn+MKlZfYOCrFb0qT36gkhoikXVGnjGGZbecjpdumgsAOH1CVdhF+nSPNhafbQqQ2chxwyUZ5SMdbnj8WsXOgdKdFxPnomikqSt5I6/uwCP6ctqtJpqMLRBeXteAOb9Zji2HOgZsTike7rl0OgDJkxeh0VRqwydD1hl5AJg+rAy1Yyqx8Zfn4bFrasOMvBimCyJpuRMhnrnhZDAG/PWDPZh851tYp0ph7BsgIy/mAERX+rZe49TOePCoPHYh4WAzm8iTLxA+3iV1e9p5tMtQjyZT4dtvzR2DoaUOeP1BvCn3q6aYfBTKnFY4rGZF00aw86i2D2z5AE+q5CJlTivGDipSjPuyzYeVdQ+v2J3243PO8dqGRgwqsqGq2Aab2YQHlu/C1saOpF5PrZUv0lglT56MfKHhD/CwmDsfsCBkOFYLwwt1DXhxnaT6mrcxecbY3YyxQ4yxDfLfhcm+VizluIHuupSrTGOx7fUAACAASURBVDPoQ+u0mpW0w7r6VhxqT091bENbH+r2t+Hy2hGwmE1KuOX+d3cl9XpGYRm7xQx/kCvqpUT+Ij5hxgBfMKhJHnjnx/Nw2ezhWDQzPIljINCLoOV7TP5+zvls+e+NZF/kejkbA5Bi9EDm7465wr+uPwl3XzwNADB6kLa0+5ZzJuJbp45WvpSXP7oKp937fspV8IBQ796Zw7V9MScNKU7q9YTHfs3c0coykUqXLyGbLrePGr3EIBCUPHmr2YS/Xz0HPz13EiYNKUGR3YJfyt/7gaZR5ShdfcrolDYASYaccIHVk4QTBktGwWkz4+JZw+Lqy1rInDmpGteeJt0ka8q0pd01ZQ7YLWZ4/EFNBerPXtqY8vMQcX+nTfrKCUngZKVfRbhm7vhByjIRm8+HyVePP4Dj7n4Hv162LdOnktXsb+mRi+oYzp8+FD+QZbUBqQdzJlDXg/z6shkZqcRXk24j/33G2CbG2OOMsQqjDRhjixljdYyxuqampogv9MHP5mP5T+YpM9VOqxkPXXU8Xv3+6ek58zxESCMLypxWxTCq1Tz3NGnnPFKBPp3s4lnDYDOblJ4B8cI5x2+XbcO6/VIKqFqIzaYY+dz35MUk9ZOf1mf2RLIU4ZM89P5ueAMcFlO4KaPRvkS/bnWMseUAjASQ7wDwNwC/hhQ++zWA+wBcr9+Qc74EwBIAqK2tjTg2HSOn3YmWe9nWiSkXGGZg5IXRVaczprp7TkefD1cuWQ1A+8OzWxNvNt7e68M/Pt4Xeg1VtaMw+LkarjnS4cbrmxpx/KhyfLBDcng4BzY3dOA4GrFq8AdDn7E/EDRszi086KIBzm4ZV12EvU09eOtHZwzocSPRLyPPOQ+vmzeAMfYPAK/351gCEbqJpyUgoaWm3KF5PmlICfY1S7o2ao/R50/ttV21p0V5rE4nc1jNcYVWXqw7iKZuD743f0JYC0O1AmGuh2suePAjpTG8mosfXon6exdl4IyyF7WyanO3J6K0wTPfPhljqga2icxT15+ENzYfxuQhA9vfIhLpzK5RT21/CcCWVLyuCNeQjU8cUTRU4rDgjgunorrErhjGZ9ccULaLx5Nv6/Fqcu2joQ7/qD15h9WETrcfO492Rd3/5y9twh/e2gEAOKarkjUK17gTHB1kC0YGnjCmWTXyXLW3BWMGFRlud/rEKqUuY6AYUeHC4nnjs0ahNp0zE39gjM2GFK6pB3BjKl6UPPn+senu8+C0mpUJTxGuYSx04/TGYeRveKoO6/a3YfuvF2pSxNbtb4MvEMQp40ITomv2hSQUNEbeYsayTYexbNNhrPjZfKUSNhKc8zC9G224xhT3+RO5S3uvF3ubezBpSDF2Hu2G2xfEdIP0YEIibZ485/xqzvlxnPOZnPNLOOeHY+8VGxcZ+X5R6rBqMlqEYVRfzi63H+fc9wH2t/Tod1cQXvzuY9pJ2m8+tgZXLlmtCIUdau/DRztDE+ouVabULtW+a/eFQjqR6PL4w6QQ1OEf4dUnGucnUg/nHEs+2qPoy6SSX8tdxS6YEQoWnDS2MuXHyRdyIoVSTbFd+iFT+nBqsEfIQNjT1IMz//hBzP1FTF8gsmhW75WM9ot1B5V1y245PUxsTrBN7voVjSc/qccxnZFXp8nZcjwmr+Zn503K9Cn0iy2HOvG7N7bjZy+mPh1XyGGoxQwnZkn8OxvJOSPvkn/UqegsRCQvCSEahauN7ocqj/3b/6rDyl3NeGC5VNH6i4WTMX2YNkNEbcj0UhVG/PndnTii0y3SevK5WwylL3r68gkjUH/vIuUa5dp78snZL609sfWJ6upbE5KI9vgDmDO6QqMRP7hkYJuC5BI5Z+RDMfkMn0ieMFFVcbpoZk3cxWU2szDyIaP7vWfWabZR6+NcOCO8xHz2yFDpxOEozcbV6XHLNoVe02ximpi8uPHkYp58r087+hAGzCk7NQMlIpcqxE0p1u+0pduDyx9dlZDH3+cNwGk1ayY2ky2qKwRy7sqIST7y5FODy2ZRyq6nDyvFQgNjbIQIy/z9w7145XNJiElMtt77ZUkB8Lm1oYydSoMem8WqxutHOt0RP9OKCCqjLt0P3WaWvhsbDrbH9R6yiS63NrNGXfQHhK53riB6B8TSERIZRRsT+Mz6fEHFDjx+bS1+dcn0JM+yMMg5I1/qlAzD9aeNjbElES8lsrG1W8xh2tdHDFr0+QJBTSOGn7wgeWE9Xj9qR1fg1PFVmu0f+NpsJX1TjbpIxe0Loj1CCqE6F16Ny2423O6fK/cZbZ7VCKMoEDevyiLpukUb6WQjogtYrAQJEc5JJN3Q4wsoo7azpwzBNaeOSe4kC4ScM/J2ixn19y7SaFQQ/aPUKTormXDVSdpeuUZSwKLJyHfnjwcATKuR0tdaur2oKrajvEhr0C87frjhcYU3VirfZDY0GHtz/gDHFXNGKLpFIlTk0mmTqEM3uRbD7ooQkxYhrfUHcmt00tojGXlh459bewBjbl0WNmJp7ZHmdAxUCQxp6vJgb3MPVbwnQM4ZeSL1hDx5E2wWk0a2Va1pIxDx4ZEVLlwxZ4TijfV4/Ch2WFASIYNGz8hKFx6/thZv/FAq/95zzHjy1RcIwmoxYa4cDqqQbyJThmozKtRVj7nm+ao9+UqVauGQUmlC8Z7Xt6E7h/rXLtvUCECqvwCAxz7eCyB8ZChSYs1xevJ3v7YVAOIuxCPIyBMASuyS0RRGUt1OzSiEIvrEumxmVJXY0dLjAecc3R4/imzaOPkT150Y9dhnTxmiqGNGMmK+AIfVxHDXRdPwxHUnYspQaeRQO0abG21TTb41pyE/O1k8/gB2H4te1SsEyV7/welYe/s5ynL1tdTXJGQrXW6fMi+y/UgX/rv+kDIxqp8UP9gm3Yzj1VwX/Q6oYXv8kJEnFE9eeOhDSyWNG8aAdgNPvleRDTZjUJENvgBHZ58fvd6AIiAnmFAdWy/ebGJw2cxhcWmBLxCE1SyNMs6aPFhZXqyLyaubx3RGeK1McM//tmHBnz+K2tO2Uw5jVBTZIjbBidfbzTQt3V5NVs0/Pt6rhFc6deGaAy29AOIPr4l+zgtnGOkiEkaQkSeUmLz4AS69+VQ8951TUOqwosOgD2unbPjLnFZUy/nJh9r74A/yMCNf4ogvdFNstyiNvvX4A1xj+ISt0x8LAP76jRMAhDzjTBIMctz75nZFF6ihrTfitruPdcNhNSk3WDX/7ytStlKissyZQu+tqz+/T3drK5u3HZaK4OLNHgoEOcZWFeGeS2ek4EwLAzLyBM6YKGXDiGKlmjIn5o4fhBKHxdBYdqiMfFWxZOSFBIKoY3jsW7WYP7naMKvGiGK78bE45/AGgrCpcuVFz1+bgcc7Z7Q0UdlpMAIZaPa39uLRD/cozyO1Vly7rxX/XLkPIypchhOKY6uk0ZA7R9IoRcXxTLnmwmYxwSq/L3U/4W6PHwdapRtfvEbe6w+iusROefEJkJnWKURWMX/yYHx+17maCT9AytHWe48ef0ApXCl1WhWver/8YxUpmAumDcGCaUPiPodih8UwziryrDWevPzfKDlP3FSywZO/980vNM/bdNWfmxs68ND7u5S4tH69QCnyyhFNHuHJ/+y8yfjj2ztgNTNFigCQbtyMMWVup9huibvYy+MPxj06JCTodkgAQJiBB4Cmbg/e2HwE6w+EMhnq6tvQI/8go3nyieKymbFiRxM26dIo3bLBUGfORAtNO6xSdpA+9psJ3t56VPNcL4F80zPr8M62o0oYR5/3LxCTkjkTrpHfp9NmRrnLis8PtGNPU0jjqEW+mYntypxWePzBuDSHvP6gJlWWiA1dLSIiIrPmmdWhylW1fS2ymVHhssHEgP3yBJpRnDwexGTu4qe00gjCAKq7Wv3y4ulYNLMGZ06qDnsdxpgcZsq8kdejD7eIkFKs1Ei7TiffHwgmVCE60AhjbTNr03EFYoLdo0gfSGOyyXe+hSc+iV7I5g0EIzYIIYyhq0XERJ0rL4zxo988AYwxmE0MlUW2fht58UPX5+WL1x1dGWr8MLLShUe+fkLEtLtSpxXPrD6Av7y3K6lzSRd6T1y8Z1EwNHNEueF+4n0K43nTM5/j0kc+UTJTsoEthzqU5jDCeNutJsNMoXp51Cfez2FV7vyv/rcNu491Yfm2o4YyxZInT71bE4GMPBGTbk/I8IoMmAmDQ4VIVcV2ZVIx2XDNvImSV16kC1kIlcuasvCsk0iIc/jzuzuTOpd0oQ/X6G9Sf7x8puF+ak+ec47lX0hhoGwISQkuemglzrnvQwAh4223mA17r177xGcAQmmT3zhZW2Xd1OXFDU/V4can14Xt6/EHDCfcicj062oxxq5gjG1ljAUZY7W6dbcxxnYzxnYwxs7v32kSmYSpgjRigkytcSPi8vrlifCTcydhxvBSlOvEyJR0TVf8ksjZELMVLRR/eu4k/GLhZADhOvdqXZeF04eGyTQIlJi8L6DRDPJnqRSriLXbLSZYougVCI9/0UytKN5BOUS3y6D4y+uncE2i9PdqbQHwZQAfqRcyxqYBuBLAdAALAfyVMUZjrBxF/TsVk67qZh2DVAqTyXryFrMJk4eUhmVZ/EtuMJ7IED0b0utEplCxw4LvzZ+AYWUOPLNa0m95T/bE/SqDPbY6cutDu8WEUocFhzv6NDcKf5a0OdQrTSrhGp1ExnDVvEowyDXbqRFpp0bppDTxmjj9ulqc8y845zsMVl0K4HnOuYdzvg/AbgAn9edYxMAzTu65+snuFnxWL/Vp7ZPDNc4InnyyMXnpNU3odPuw/YhUINPt8Yd1goqHZIz8poZ2Q8VNI3724kY8osr3NkJMWoubnjo088iK3eCca4q/xkXpb8sYw9jqYuxr7tEUGmVLL9s2XcGciLE7baEU3LFVRXj468cr2zR3e+DxhcI6avbKmThGGmQ08Zo46bpawwEcVD1vkJeFwRhbzBirY4zVNTU1GW1CZIgXb5qrPL7i0VWyPo0UE1X/0IQKJYB+/QBdNqkgauEDH2NPU3fS+iRGceBYXPLwJ5j3hxVhy4NBjmfX7Ndkxry0rgF/fNvItwkhblSiLZ26zWKR3YI+X0BT+j8uhvzDiAonGtvdGiOvHglkkp1HQ7o8HX0+PPHJPpwzZTBctlD++3fPHI/ZI8uxYKpUO7H9SFdET16g9+T9ssR1vDo3hETMXyRjbDljbIvB36WpOAHO+RLOeS3nvLa6Ojwljsgcg4q1LdX6fAF0un2Kpr/gjEla/fhkUf94r35sjWLkv1o7IqHXSTZcY+QZv7axEXcs3YK/fSCFEOIJkazZ24L/rpdUGCfJnbecKk38Mqc1rC3eKFX2kBGDimxo7fEq3i8A+IPZ4cl//R9rlMfN3R54/EFcNEuKs4s5BJddEq77gzy5vOtYtzLxareYceWJIzFmkPYaFOnmKESqKRVDJUbMq8U5X5DE6x4CMFL1fIS8jMhh2np96OjzKVo3gkFFqemvqZ60bexwK+mawvuLF2sKhvN7m7qxpbFTaW8oUjvVxjkQ5IZx468tWQ1A8lDFZGqJSt7hUHsf/vyONvPHqBhNTYXLho4+H3o8ISPv9WeHJ6/m6sckgy86Wokbp/hsK+QJ9KdX1eM788YBkEZ/935FMv73vbMDD70vhcL0705UMSc771OopCtc8xqAKxljdsbYWAATAaxN07GINCK0YACp7L6zz6dpoAwYT5Alg1M3DG+S86QTjfOrU+xitZ8DtN75vmYpHnze/R/hlufWK2mPYpSxQxWaMCq4Uqc1qkMr6mu0/kA7Xlmv9XliXUMxuX3xwytD550lnryaRjkeL8JTIsvIaZU+QyGdXN/Si62NUkhL3QbyklnDlMd6ZUpxbUvi1EMiJPqbQvklxlgDgLkAljHG3gYAzvlWAC8A2AbgLQA3c85zoyab0PCv60Pz5e2yJ6838oAUblg4vX/yr/owkJiASzQtc7Rq2B+rVP7pVfWY85vlyvOPd0nzQiI9UWi4P/rhHjy9qh4f7QzNGxlp7TdGECETI4FkU0zV8x6CbInJG+GwaI28+n3PGC69l1V7WsCY1KtXMKIi9Nkdau/D3a9tVV5DePKlFK5JiP5m1yzlnI/gnNs550M45+er1v2Wcz6ecz6Zc/5m/0+VyATqoXGP1x/RyH/0i7Pw6NVz+nUsfdjnkCzclagnf/NZE3DSWKmhSDRRr063D3e9ulVTZft/r27F+9tDmjOvbWxUHt/16lZFGhcw1tqP1KdWyDKI8xJMGVoSFos2onZMZVjHrWzJrqkssuHS2cM0y0S/XZ8cUlL36X3lu6fBxKRRU7HNApNqFOO0mVF35wJcfcpoAMCTn9YrN963thwBQJ58olAuEhE3Nz69DvtbeuOWD04Udb49ECqKSdT7tZpN+LLcVzaSqFd9cw9m3v1OhHWR5QK2HOrEiArJYOtTBwGgXbVMbAcAv7lsBp687sQw6YK3fjQPH/z8rIjHU6O/2WWLJ+/1BzGoyI7nF5+iLNN78urJcJvFpHjsRpOoVcV2w369Io13TFXsmyIRgow8kTCR1BL7S4Wu2vXdbUcNl8eDPYY878ufN0TcVz9xO6rShUXHSdkiHX0+Jd2xw8Brb5OXvfvjeXj3x2cqy8ucVsyfPBiVCVTu6nFYteflyxJP3hsIwmphmpu/uP5iBKPPlBGFUcURQi/qz8Af5PD6g9h2uBM/OHsCefIJQkaeiMmtF0zRPPelKaujpsyBxfPG4fUfnK5ZnkwcWxTY6LsUCdSSAovlLA+BvhvWI18/ARerJgRF4VK7gScvQj/Dyp2agjFBRYwsmmiIyV9hILPByHMuGWC72aTxysW5PnTV8fjrN07AUJ32kPhMIxlstef/2oZG7DzaBc6BIQads4jokJEnYnLFHG2eujeQnjl0xhhuv3AqZgwvwws3ztUsTxSRqdMboaWgOummXOddN3drjbfdatJMCouJXaOYvCj+0WcKCWKlSkZDGM67LpoGYOC1azr6fDj//o+wrTE0LyHy4G0Wk6bOwSF74hVFNlx4nFabBgi9l0jpkOpwzTvbjuKih6SsokH9uH6FChl5Iib6KtbRlZFL8FOFfoIyUYRRjtTQW+3JX3fqWI03/+FObeW1w2LWhCIGFdtR4rAYTrJ6/EHYzCbNZKKaZEJPAnHjCE1qpsaT/89nB3DxQyuVG+JL6xpw/7s7w9JP1+5rxY6jXfjj29uVZeqYuzqcZI9RlSreQ8RwTYSqZX2BHhEbMvJETNTaIs/ecDKuP33sgBz3pZvm4tkbTk5qX5EBpNenB6S8+FaVt+60mXH7hVOx7JbT4bSawzRs7FaTJqOowmVFuctqGK7x+ANRBbTU4Zo3bjkj/jcEYEqNJJFQ6rDAxCKHohLlkRV7sPlQB1buagYgafM8+N4uPLWqXrOdMOIrdjTh6dX7AYQmRfWefKSRTOi1pPWR0iEjVS33ZyRUqFDCKRETtVd12oTUSBjEQ+2Y5L35UpWRP9zRh3KnTYmR//ylTVgqFyOpY+3Th5VhZKUTO49qJW4dFrOSLQJI3ni504ZjXR40tvdhWLkT9c09cFjN8PiDmnRBPcPKHLjn0um4YEYNqksS80pvvWAK5o4bhDmjK1Fst8TsKBUvYtAhes0KjnZqxeHU1bZ3/XcLrj5ltJLGabOYNIY5VnGXuJ6RwjWRNJAoXJM45MkTMUkmJp5phOfd3OXB3N+/j5+8sEFZt1RVbfqXK2dr9jMSv7JbTZqwQrnsyX+6pwWn3vs+AkGO+X/6AKf8/j14fNE7FzHG8K25YxI28IA0ojpPLjgrcVhTYuTdvoDSc/X1TY2a6l99eqPR8UQaaaKNPITjUGyPPfEqMJuYYY0GER3y5Im8xG4xo8RhwX8+k8RQP9ndrKwrspkVXXz9DUyEWswmpsSk7RaTZrsKl03T3KRbFfePlpqZSortFs1xk2X9gXZ0uf0YPciF9QfasfyLY8q6Il12ULdOxqG914t35Gblaq34eBChJn0nMMHkISVhyypctohzHURkyJMn8pavnDACRzql+PpUlSyAKcrIRB0rFt62/kbgsplRrvIoM9GGr9jR/3BNY3sfXt0gjWpuu2AqAOCmZ0It93y6Yiv9JPaeph70ePywmBhOTTCMJ4TfIo1oZo0sx9rbz9Fo0A8vp/TJZCBPnshbbrtwCnYf68bK3c0aRcNoiYfCky932fCfxadgj6yfAwAPfG02BpfYwRjTpF12pcCjTpRiu8UwhTMR5v1hhZKGOd6gM5VaQ59zrsgKCBraetHp9oe1bEwEtVaNnsGlDlw0cxge/XAPthzqxNlTElMjJSTIyBNxcddF0zAuSou6bMRuMeOZG07GDf+qQ4MskcA5R6/Xj8Eldjx+7Ynh+8iefJnTisGlDgxWFd9cdnyo7406NnzhXz5O11uISLHDosg+JIsw8EU2s+Z9CtSSEA+9v1uj2wNIN4Fujz8pffe7L5mOOaMrccKo8tgby5Q5yVwlA101Ii6+PUBpk+mgzGnFtkbJ6/X4gwhy4LrTxmLG8LKwbYUnH2uCrz/57qmgJEUxeUBK69TH3wGgzxuahP1ghxSrv3T2MLy6QRJta+3x4X8bGzUZMqtuOztq827B4BJH3N8pUdIQqdE5ER2KyRN5j9Nmglue6BPdpiJN+DlUnnw0Iu0PJN7kJBlSmUJZ4rDCostmYUzryXMAc8cNwgmjQv0F1uxrAaDNuqkpcyaVORQN0QzckaRMc6FDRp7IexwWsxJfFt2mInmFoohHr4ipJ5pszGPX1CZxlolR7LCg1xvAlkMdSe2v1tk3KkgaVuZUrtmh9j5sONiOWSPLNUVO+haG6ULcgGIVWBHGkJEn8h6HVTLynHP0yKX7RuEJIJQbHqtZ9OwIseSBamghFAe+8rdPNcv3NHVj1Z6WmPurC5tE4dhtF0zBt08fi/V3nQunLXRjbGzvA+fAqeMHoUaV4XKwVZoTeOtHiVXuJoriyUcpMiMiQ1eNyHscVhOCXEoJFMbNSCESCFVaxtKFGV7uRP29izTLasocWHrzaSk449i09kjVqHppg3Pu+xBX/WN1zP2/UE2iihvbjWeOx10XTUNFkQ0Oq0lpfSjaHJY6rTh9QhX+fvUcFNstiqxyurWMRGHUAOux5Q39bf93BWNsK2MsyBirVS0fwxjrY4xtkP8e7f+pEkRyCK/c7Q8oWTaRNFAunjkMRTYzvnriSMP1erbdc74Sg/79l4/DeFlrPt3MkpuPqLtKfaQTVovGN+SG2wAMm8A4rSFPXqSIljgsYIzh/OlDlTmLYWWOiDfMVGGRq2NTJchWaPTXk98C4MsAPjJYt4dzPlv+u6mfxyGIpBEZM25fAGv3taLEYcH0YeGZNQAwstKFrfcsxCSDiksjXDaLkv0xkOJZl88ZgcEldoyRte055/jW42uTeq1vyq321DhURr5TZeRD66VrOtWg92yquXHeeACRQ2REdPrb4/ULzvmOVJ0MQaQDkfvu8QXR4/GjssgWU0ArEbzyJOZAGnnGGCYMLla87EQVKc+ZMhgAsO/3F2LC4PDRh91iRq83gKdX1aOpSwoN6eWWAWB4RWJyBskwd/wg1N+7CFUkM5wU6ZwlGssYWw+gE8CdnHPDihHG2GIAiwFg1KhRaTwdolAR4RqPP4A+X0CjKJkKqkrs6HT7Bzx3vsRhQYvcj7ZHl04ZCPKIN7Lmbg/e234Mowe5oojPcWw/0oW7Xt0KQArfqCWUhawDdWrKfmIaecbYcgBDDVbdwTl/NcJuhwGM4py3MMbmAPgvY2w657xTvyHnfAmAJQBQW1tLUytEynEo4Zog+nzBlOdbP3X9SVi1pyWs0Xa6KXFYlUlRdbYMIOm8R4qVvyKLqO1viVwxqxYqA4BJQ4o1NwTFk09QmIwYeGJ+KznnCxJ9Uc65B4BHfryOMbYHwCQAdQmfIUH0E6Gt0tTlgdsXgDPFqXgjKly4ojayBku6KHFYlHDNZ/WtmnUefyCikR9UFDvswVio0hQIj73fcMZYDC6x44LjjPw/IptISwolY6yaMWaWH48DMBHA3nQciyBiMbWmBIwBmw91yEY+P4pqShxWdHv9CAY5fvriRgDAhbLRFemPRkRqyKFmbJU2LXLKUO1E9PjqYvz43ElRtfOJ7KC/KZRfYow1AJgLYBlj7G151TwAmxhjGwC8BOAmznlrpNchiHRS4rBieLkTH+9qwqaGjpiFTrlCqUPK7OlWNSsXGvjqilY9ImvmxZvmRtzm3zecgp+fP1l5Pm6AUkOJ1NPf7JqlnPMRnHM753wI5/x8efnLnPPpcvrkCZzz/6XmdAkiOcYMKsJn9W0A8qc8XqQ0HusM9aQ9a7KUNXNI18pPjdDxGT0ocohpaJkDN581QXlOE6y5C1W8EgWB2qBF68GaS5TIKY2H2iUj/5vLZiiFWV9XFTvp8ciefCIjmsEpFh0jBo78+LYTRAzURp7nSQ6X8OQb2yWvvdRpjSuXXIRr7HHE5hfNrAEATZMUIrcgI08UBOpwQ740gxaevDDyJQ4LBpfGY+SDYCy+5tsPfG02NvzfuTnZzJ2QICNPFAQXHleDy+eMAACcObk6w2eTGoQnf0h48g6LxpMPRFD0+usHu8F5eO9aI6xmU7/a+xGZh1qtEAWB1WzCn66YhbsWTUNZnoQeSuTiq71yH9rKIjusZhNqyhw43OFGr9evePtqSM2xsCBPnigo8sXAA6FwzYaD7QCAYbLW+/fPlrJiRIMUI86dRk2xCwUy8gSRo+ibaIjCJJdc6Wpk5EWjj1kjjFU4ifyDjDxB5CiMMZw5KXx+QbQ21IuWAcAZf1gBILH0SSK3ISNPEDnMHYumhi0TOe2HO9xh6wTpbvRBZA9k5AkihzHq6jRe1offdaxLs5yrCgQiZd4Q+QcZeYLIYUoMGoeXOqwYWenEhgPtNCyznQAACRZJREFUmuWiwxMgSREThQEZeYLIYcQk66LjajTL54yqwJZDHZplosMTkHgnKSJ3oTx5gshhGGNYd+eCsHz4cpcN3bqJ12NdoRj9V04YMSDnR2QeMvIEkeMMMtCrKbJLPVo550plq/Dkl/9kHoaWkapkoUDhGoLIQ1w2C/xBDm8gFJYRRr66mAx8IUFGniDykCJREKXq/drU5YHNYkKpkwbwhUR/O0P9kTG2nTG2iTG2lDFWrlp3G2NsN2NsB2Ps/P6fKkEQ8eKSdW16VF2jWnq8GFRkI0XJAqO/nvy7AGZwzmcC2AngNgBgjE0DcCWA6QAWAvir6PlKEET6KZKrXtXSBl1un2HKJZHf9Lf93zucc+EqrAYgpuwvBfA859zDOd8HYDeAk/pzLIIg4sdll3wqkWETDHK8vfWooSolkd+kMiZ/PYA35cfDARxUrWuQl4XBGFvMGKtjjNU1NTWl8HQIonBRPHk5Jv/y5w0AgHX72zJ2TkRmiDl2Y4wtBzDUYNUdnPNX5W3uAOAH8GyiJ8A5XwJgCQDU1tZSrTVBpABRJCVi8k3dnmibE3lMTCPPOV8QbT1j7FoAFwE4h4fEMQ4BGKnabIS8jCCIAaDYLmLykpF3kepkwdLf7JqFAH4B4BLOea9q1WsArmSM2RljYwFMBLC2P8ciCCJ+REy+Rw7XdMm6Na/efFrGzonIDP2dan8YgB3Au3Ja1mrO+U2c862MsRcAbIMUxrmZcx65TQ1BECkllF0jGfeOPh9cNjNmjSyPthuRh/TLyHPOJ0RZ91sAv+3P6xMEkRxOq9aTb+/zodxJmTWFCFW8EkQeYjIxuGxmpTtUR58PpWTkCxIy8gSRp7hsFvTIxVAdvT6U51ETcyJ+yMgTRJ4iKVH64fUHsba+Vcm4IQoLMvIEkae4bBb0eAJ4alU9AODjXc0ZPR8iM5CRJ4g8pcgmefLbj0i9Xu//2uwMnxGRCcjIE0Se0un24dM9LWho68WkIcW4UNcikCgMyMgTRJ6y82g3AGD13lYUUTy+YCEjTxAFAE26Fi5k5AkiT/nw5/OVx2TkCxcy8gSRp4yqdCmVr2TkCxcy8gSRpzDGUFViAwCKyRcwZOQJIo+pLrYDALX9K2DIyBNEHlMlG3ny5AsXMvIEkcdUlUhGnmLyhQsZeYLIY0S4hox84UJGniDyGPLkif62//sjY2w7Y2wTY2wpY6xcXj6GMdbHGNsg/z2amtMlCCIRqikmX/D015N/F8AMzvlMADsB3KZat4dzPlv+u6mfxyEIIglOn1iFxfPG4fhR1PavUOmXkeecv8M598tPVwMY0f9TIggiVRTbLbj9wqlwyEVRROGRypj89QDeVD0fyxhbzxj7kDF2RqSdGGOLGWN1jLG6pqamFJ4OQRAEETNQxxhbDmCowao7OOevytvcAcAP4Fl53WEAozjnLYyxOQD+yxibzjnv1L8I53wJgCUAUFtby5N7GwRBEIQRMY0853xBtPWMsWsBXATgHM45l/fxAPDIj9cxxvYAmASgrr8nTBAEQcRPf7NrFgL4BYBLOOe9quXVjDGz/HgcgIkA9vbnWARBEETi9Dev6mEAdgDvMsYAYLWcSTMPwD2MMR+AIICbOOet/TwWQRAEkSD9MvKc8wkRlr8M4OX+vDZBEATRf6jilSAIIo8hI08QBJHHMDkhJitgjHUB2JHp88gSqgA0Z/oksgS6FiHoWoSgaxFiNOe82mhFtgla7OCc12b6JLIBxlgdXQsJuhYh6FqEoGsRHxSuIQiCyGPIyBMEQeQx2Wbkl2T6BLIIuhYh6FqEoGsRgq5FHGTVxCtBEASRWrLNkycIgiBSCBl5giCIPCZrjDxjbCFjbAdjbDdj7NZMn0+6YYyNZIytYIxtY4xtZYz9UF5eyRh7lzG2S/5fIS9njLG/yNdnE2PshMy+g9TCGDPL/Qdel5+PZYytkd/vfxhjNnm5XX6+W14/JpPnnQ4YY+WMsZfk1ppfMMbmFvD34sfy72MLY+w5xpijkL8byZAVRl5WrHwEwAUApgG4ijE2LbNnlXb8AH7KOZ8G4BQAN8vv+VYA73HOJwJ4T34OSNdmovy3GMDfBv6U08oPAXyhev7/ANwv6yO1Afi2vPzbANrk5ffL2+UbDwJ4i3M+BcAsSNel4L4XjLHhAG4BUMs5nwHADOBKFPZ3I3E45xn/AzAXwNuq57cBuC3T5zXA1+BVAOdCqvitkZfVQCoQA4C/A7hKtb2yXa7/QWob+R6AswG8DoBBqmS06L8fAN4GMFd+bJG3Y5l+Dym8FmUA9unfU4F+L4YDOAigUv6sXwdwfqF+N5L9ywpPHqEPU9AgLysI5GHl8QDWABjCOT8srzoCYIj8OJ+v0QOQ+hIE5eeDALTzUP9g9XtVroO8vkPePl8YC6AJwBNy+OoxxlgRCvB7wTk/BOBPAA5A6jbXAWAdCve7kRTZYuQLFsZYMSRZ5h9xXXtELrkkeZ3jyhi7CMAxzvm6TJ9LlmABcAKAv3HOjwfQg1BoBkBhfC8AQJ53uBTSjW8YgCIACzN6UjlIthj5QwBGqp6PkJflNYwxKyQD/yzn/BV58VHGWI28vgbAMXl5vl6j0wBcwhirB/A8pJDNgwDKGWNCW0n9XpXrIK8vA9AykCecZhoANHDO18jPX4Jk9AvtewEACwDs45w3cc59AF6B9H0p1O9GUmSLkf8MwER51twGaXLltQyfU1phUiutfwL4gnP+Z9Wq1wBcIz++BlKsXiz/lpxNcQqADtXwPWfhnN/GOR/BOR8D6XN/n3P+DQArAFwub6a/DuL6XC5vnzdeLef8CICDjLHJ8qJzAGxDgX0vZA4AOIUx5pJ/L+JaFOR3I2kyPSkg/gBcCGAngD0A7sj0+QzA+z0d0pB7E4AN8t+FkGKI7wHYBWA5gEp5ewYpA2kPgM2QMg4y/j5SfE3mA3hdfjwOwFoAuwG8CMAuL3fIz3fL68dl+rzTcB1mQ2p6vwnAfwFUFOr3AsCvAGwHsAXA05DajRbsdyOZP5I1IAiCyGOyJVxDEARBpAEy8gRBEHkMGXmCIIg8how8QRBEHkNGniAIIo8hI08QBJHHkJEnCILIY/4/G0T2vqvfIXcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "          A         B         C         D\n",
      "0  1.115325 -1.100849 -0.856824 -0.782018\n",
      "1 -0.343962  2.957948 -0.524690 -0.042329\n",
      "2  1.819203 -0.088141  0.586369  1.593667\n",
      "3 -1.940123  0.000997 -0.353373  1.432890\n",
      "4  0.150486 -0.544587  0.481433 -0.977219\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#plot\n",
    "import matplotlib.pyplot as plt\n",
    "#Series\n",
    "data = pd.Series(np.random.randn(1000),index=np.arange(1000))\n",
    "data = data.cumsum()\n",
    "data.plot()\n",
    "plt.show()\n",
    "#DataFrame\n",
    "data2 = pd.DataFrame(np.random.randn(1000,4),index=np.arange(1000),\n",
    "                    columns=list(\"ABCD\"))\n",
    "print(data2.head(5))\n",
    "data2 = data2.cumsum()\n",
    "\n",
    "#plot methods:\n",
    "#'bar','hist','box','kde','area','scatter','hexbin','pie'\n",
    "ax=data2.plot.scatter(x='A',y='C',color='Red',label='Class2')\n",
    "data2.plot.scatter(x='A',y='B',color='DarkGreen',label='Class1',ax=ax)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1.00905773, -0.92788136, -0.06127721, -1.41114046],\n",
       "       [ 0.59449154, -2.45317578, -1.55714725, -0.93171761],\n",
       "       [ 1.11384067,  0.48324759, -0.06705042,  1.84578395],\n",
       "       [ 1.59858344,  0.08813779,  0.55254697,  0.17842372],\n",
       "       [ 0.08711289, -2.20566513,  0.11889692,  1.44591235]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock = np.random.normal(0,1,(5,4))\n",
    "stock"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.009058</td>\n",
       "      <td>-0.927881</td>\n",
       "      <td>-0.061277</td>\n",
       "      <td>-1.411140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.594492</td>\n",
       "      <td>-2.453176</td>\n",
       "      <td>-1.557147</td>\n",
       "      <td>-0.931718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.113841</td>\n",
       "      <td>0.483248</td>\n",
       "      <td>-0.067050</td>\n",
       "      <td>1.845784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.088138</td>\n",
       "      <td>0.552547</td>\n",
       "      <td>0.178424</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.087113</td>\n",
       "      <td>-2.205665</td>\n",
       "      <td>0.118897</td>\n",
       "      <td>1.445912</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2         3\n",
       "0 -1.009058 -0.927881 -0.061277 -1.411140\n",
       "1  0.594492 -2.453176 -1.557147 -0.931718\n",
       "2  1.113841  0.483248 -0.067050  1.845784\n",
       "3  1.598583  0.088138  0.552547  0.178424\n",
       "4  0.087113 -2.205665  0.118897  1.445912"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_rise = pd.DataFrame(stock)\n",
    "stock_rise"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['股票0', '股票1', '股票2', '股票3', '股票4']"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_code = [\"股票\" + str(i) for i in range(stock.shape[0])]\n",
    "stock_code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      0   1   2   3\n",
       "股票0 NaN NaN NaN NaN\n",
       "股票1 NaN NaN NaN NaN\n",
       "股票2 NaN NaN NaN NaN\n",
       "股票3 NaN NaN NaN NaN\n",
       "股票4 NaN NaN NaN NaN"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(stock_rise,index=stock_code)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票0</th>\n",
       "      <td>-1.009058</td>\n",
       "      <td>-0.927881</td>\n",
       "      <td>-0.061277</td>\n",
       "      <td>-1.411140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>0.594492</td>\n",
       "      <td>-2.453176</td>\n",
       "      <td>-1.557147</td>\n",
       "      <td>-0.931718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>1.113841</td>\n",
       "      <td>0.483248</td>\n",
       "      <td>-0.067050</td>\n",
       "      <td>1.845784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.088138</td>\n",
       "      <td>0.552547</td>\n",
       "      <td>0.178424</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>0.087113</td>\n",
       "      <td>-2.205665</td>\n",
       "      <td>0.118897</td>\n",
       "      <td>1.445912</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            0         1         2         3\n",
       "股票0 -1.009058 -0.927881 -0.061277 -1.411140\n",
       "股票1  0.594492 -2.453176 -1.557147 -0.931718\n",
       "股票2  1.113841  0.483248 -0.067050  1.845784\n",
       "股票3  1.598583  0.088138  0.552547  0.178424\n",
       "股票4  0.087113 -2.205665  0.118897  1.445912"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(stock,index=stock_code)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-06'], dtype='datetime64[ns]', freq='B')"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "date = pd.date_range('2020-1-1',periods=stock.shape[1],freq='B')#去除双休日\n",
    "date"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2020-01-01</th>\n",
       "      <th>2020-01-02</th>\n",
       "      <th>2020-01-03</th>\n",
       "      <th>2020-01-06</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票0</th>\n",
       "      <td>-1.009058</td>\n",
       "      <td>-0.927881</td>\n",
       "      <td>-0.061277</td>\n",
       "      <td>-1.411140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>0.594492</td>\n",
       "      <td>-2.453176</td>\n",
       "      <td>-1.557147</td>\n",
       "      <td>-0.931718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>1.113841</td>\n",
       "      <td>0.483248</td>\n",
       "      <td>-0.067050</td>\n",
       "      <td>1.845784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.088138</td>\n",
       "      <td>0.552547</td>\n",
       "      <td>0.178424</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>0.087113</td>\n",
       "      <td>-2.205665</td>\n",
       "      <td>0.118897</td>\n",
       "      <td>1.445912</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     2020-01-01  2020-01-02  2020-01-03  2020-01-06\n",
       "股票0   -1.009058   -0.927881   -0.061277   -1.411140\n",
       "股票1    0.594492   -2.453176   -1.557147   -0.931718\n",
       "股票2    1.113841    0.483248   -0.067050    1.845784\n",
       "股票3    1.598583    0.088138    0.552547    0.178424\n",
       "股票4    0.087113   -2.205665    0.118897    1.445912"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.DataFrame(stock,index=stock_code,columns=date)\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>2020-01-01 00:00:00</th>\n",
       "      <th>2020-01-02 00:00:00</th>\n",
       "      <th>2020-01-03 00:00:00</th>\n",
       "      <th>2020-01-06 00:00:00</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>股票0</td>\n",
       "      <td>-1.009058</td>\n",
       "      <td>-0.927881</td>\n",
       "      <td>-0.061277</td>\n",
       "      <td>-1.411140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>股票1</td>\n",
       "      <td>0.594492</td>\n",
       "      <td>-2.453176</td>\n",
       "      <td>-1.557147</td>\n",
       "      <td>-0.931718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>股票2</td>\n",
       "      <td>1.113841</td>\n",
       "      <td>0.483248</td>\n",
       "      <td>-0.067050</td>\n",
       "      <td>1.845784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>股票3</td>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.088138</td>\n",
       "      <td>0.552547</td>\n",
       "      <td>0.178424</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>股票4</td>\n",
       "      <td>0.087113</td>\n",
       "      <td>-2.205665</td>\n",
       "      <td>0.118897</td>\n",
       "      <td>1.445912</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  index  2020-01-01 00:00:00  2020-01-02 00:00:00  2020-01-03 00:00:00  \\\n",
       "0   股票0            -1.009058            -0.927881            -0.061277   \n",
       "1   股票1             0.594492            -2.453176            -1.557147   \n",
       "2   股票2             1.113841             0.483248            -0.067050   \n",
       "3   股票3             1.598583             0.088138             0.552547   \n",
       "4   股票4             0.087113            -2.205665             0.118897   \n",
       "\n",
       "   2020-01-06 00:00:00  \n",
       "0            -1.411140  \n",
       "1            -0.931718  \n",
       "2             1.845784  \n",
       "3             0.178424  \n",
       "4             1.445912  "
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.reset_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2020-01-01</th>\n",
       "      <th>2020-01-02</th>\n",
       "      <th>2020-01-03</th>\n",
       "      <th>2020-01-06</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.009058</td>\n",
       "      <td>-0.927881</td>\n",
       "      <td>-0.061277</td>\n",
       "      <td>-1.411140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.594492</td>\n",
       "      <td>-2.453176</td>\n",
       "      <td>-1.557147</td>\n",
       "      <td>-0.931718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.113841</td>\n",
       "      <td>0.483248</td>\n",
       "      <td>-0.067050</td>\n",
       "      <td>1.845784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.088138</td>\n",
       "      <td>0.552547</td>\n",
       "      <td>0.178424</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.087113</td>\n",
       "      <td>-2.205665</td>\n",
       "      <td>0.118897</td>\n",
       "      <td>1.445912</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   2020-01-01  2020-01-02  2020-01-03  2020-01-06\n",
       "0   -1.009058   -0.927881   -0.061277   -1.411140\n",
       "1    0.594492   -2.453176   -1.557147   -0.931718\n",
       "2    1.113841    0.483248   -0.067050    1.845784\n",
       "3    1.598583    0.088138    0.552547    0.178424\n",
       "4    0.087113   -2.205665    0.118897    1.445912"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>month</th>\n",
       "      <th>year</th>\n",
       "      <th>day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2010</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2011</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>2022</td>\n",
       "      <td>31</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   month  year  day\n",
       "0      1  2010   11\n",
       "1      2  2011   22\n",
       "2      3  2022   31"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame({\n",
    "    \"month\": [1, 2, 3],\n",
    "    \"year\": [2010, 2011, 2022],\n",
    "    \"day\": [11, 22, 31]\n",
    "})\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>month</th>\n",
       "      <th>day</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2010</th>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011</th>\n",
       "      <td>2</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022</th>\n",
       "      <td>3</td>\n",
       "      <td>31</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      month  day\n",
       "year            \n",
       "2010      1   11\n",
       "2011      2   22\n",
       "2022      3   31"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.set_index('year')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2020-01-01</th>\n",
       "      <th>2020-01-02</th>\n",
       "      <th>2020-01-03</th>\n",
       "      <th>2020-01-06</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>1.113841</td>\n",
       "      <td>0.483248</td>\n",
       "      <td>-0.067050</td>\n",
       "      <td>1.845784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.088138</td>\n",
       "      <td>0.552547</td>\n",
       "      <td>0.178424</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>0.087113</td>\n",
       "      <td>-2.205665</td>\n",
       "      <td>0.118897</td>\n",
       "      <td>1.445912</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     2020-01-01  2020-01-02  2020-01-03  2020-01-06\n",
       "股票2    1.113841    0.483248   -0.067050    1.845784\n",
       "股票3    1.598583    0.088138    0.552547    0.178424\n",
       "股票4    0.087113   -2.205665    0.118897    1.445912"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data1 = data.drop(['股票0','股票1'])\n",
    "data1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.1138406723998802"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#先列后行\n",
    "data1['2020-01-01']['股票2']\n",
    "#data1['股票2']['2020-01-01'] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "股票2    1.113841\n",
       "股票3    1.598583\n",
       "Name: 2020-01-01 00:00:00, dtype: float64"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#先行后列\n",
    "data1.loc[['股票2','股票3'],'2020-01-01']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2020-01-01</th>\n",
       "      <th>2020-01-02</th>\n",
       "      <th>2020-01-03</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>1.113841</td>\n",
       "      <td>0.483248</td>\n",
       "      <td>-0.067050</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.088138</td>\n",
       "      <td>0.552547</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     2020-01-01  2020-01-02  2020-01-03\n",
       "股票2    1.113841    0.483248   -0.067050\n",
       "股票3    1.598583    0.088138    0.552547"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#先行后列\n",
    "data1.iloc[:2,:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2020-01-01</th>\n",
       "      <th>2020-01-02</th>\n",
       "      <th>2020-01-03</th>\n",
       "      <th>2020-01-06</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票0</th>\n",
       "      <td>-1.009058</td>\n",
       "      <td>-0.927881</td>\n",
       "      <td>-0.061277</td>\n",
       "      <td>-1.411140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>0.594492</td>\n",
       "      <td>-2.453176</td>\n",
       "      <td>-1.557147</td>\n",
       "      <td>-0.931718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>1.113841</td>\n",
       "      <td>0.483248</td>\n",
       "      <td>-0.067050</td>\n",
       "      <td>1.845784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.088138</td>\n",
       "      <td>0.552547</td>\n",
       "      <td>0.178424</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>0.087113</td>\n",
       "      <td>-2.205665</td>\n",
       "      <td>0.118897</td>\n",
       "      <td>1.445912</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     2020-01-01  2020-01-02  2020-01-03  2020-01-06\n",
       "股票0   -1.009058   -0.927881   -0.061277   -1.411140\n",
       "股票1    0.594492   -2.453176   -1.557147   -0.931718\n",
       "股票2    1.113841    0.483248   -0.067050    1.845784\n",
       "股票3    1.598583    0.088138    0.552547    0.178424\n",
       "股票4    0.087113   -2.205665    0.118897    1.445912"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "股票0   -1.009058\n",
       "股票1    0.594492\n",
       "股票2    1.113841\n",
       "股票3    1.598583\n",
       "Name: 2020-01-01 00:00:00, dtype: float64"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[data.index[0:4],'2020-01-01']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2020-01-01</th>\n",
       "      <th>2020-01-02</th>\n",
       "      <th>2020-01-03</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票0</th>\n",
       "      <td>-1.009058</td>\n",
       "      <td>-0.927881</td>\n",
       "      <td>-0.061277</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>0.594492</td>\n",
       "      <td>-2.453176</td>\n",
       "      <td>-1.557147</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>1.113841</td>\n",
       "      <td>0.483248</td>\n",
       "      <td>-0.067050</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.088138</td>\n",
       "      <td>0.552547</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     2020-01-01  2020-01-02  2020-01-03\n",
       "股票0   -1.009058   -0.927881   -0.061277\n",
       "股票1    0.594492   -2.453176   -1.557147\n",
       "股票2    1.113841    0.483248   -0.067050\n",
       "股票3    1.598583    0.088138    0.552547"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "col = data.columns[:3]\n",
    "data.iloc[0:4,data.columns.get_indexer(col)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2020-01-01 00:00:00</th>\n",
       "      <th>2020-01-02 00:00:00</th>\n",
       "      <th>2020-01-03 00:00:00</th>\n",
       "      <th>2020-01-06 00:00:00</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票0</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>0.594492</td>\n",
       "      <td>-2.453176</td>\n",
       "      <td>-1.557147</td>\n",
       "      <td>-0.931718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>1.113841</td>\n",
       "      <td>0.483248</td>\n",
       "      <td>-0.067050</td>\n",
       "      <td>1.845784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.088138</td>\n",
       "      <td>0.552547</td>\n",
       "      <td>0.178424</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>0.087113</td>\n",
       "      <td>-2.205665</td>\n",
       "      <td>0.118897</td>\n",
       "      <td>1.445912</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     2020-01-01 00:00:00  2020-01-02 00:00:00  2020-01-03 00:00:00  \\\n",
       "股票0             1.000000             1.000000             1.000000   \n",
       "股票1             0.594492            -2.453176            -1.557147   \n",
       "股票2             1.113841             0.483248            -0.067050   \n",
       "股票3             1.598583             0.088138             0.552547   \n",
       "股票4             0.087113            -2.205665             0.118897   \n",
       "\n",
       "     2020-01-06 00:00:00  \n",
       "股票0             1.000000  \n",
       "股票1            -0.931718  \n",
       "股票2             1.845784  \n",
       "股票3             0.178424  \n",
       "股票4             1.445912  "
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.drop('股票0',axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>d</th>\n",
       "      <th>c</th>\n",
       "      <th>b</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>0.087113</td>\n",
       "      <td>-2.205665</td>\n",
       "      <td>0.118897</td>\n",
       "      <td>1.445912</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>0.594492</td>\n",
       "      <td>-2.453176</td>\n",
       "      <td>-1.557147</td>\n",
       "      <td>-0.931718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票0</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>1.113841</td>\n",
       "      <td>0.483248</td>\n",
       "      <td>-0.067050</td>\n",
       "      <td>1.845784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.088138</td>\n",
       "      <td>0.552547</td>\n",
       "      <td>0.178424</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            a         d         c         b\n",
       "股票4  0.087113 -2.205665  0.118897  1.445912\n",
       "股票1  0.594492 -2.453176 -1.557147 -0.931718\n",
       "股票0  1.000000  1.000000  1.000000  1.000000\n",
       "股票2  1.113841  0.483248 -0.067050  1.845784\n",
       "股票3  1.598583  0.088138  0.552547  0.178424"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "col=['a','d','c','b']\n",
    "data = pd.DataFrame(stock,index=stock_code,columns=col)\n",
    "data.sort_values(by='a',ascending=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票0</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>0.594492</td>\n",
       "      <td>-0.931718</td>\n",
       "      <td>-1.557147</td>\n",
       "      <td>-2.453176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>1.113841</td>\n",
       "      <td>1.845784</td>\n",
       "      <td>-0.067050</td>\n",
       "      <td>0.483248</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>1.598583</td>\n",
       "      <td>0.178424</td>\n",
       "      <td>0.552547</td>\n",
       "      <td>0.088138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>0.087113</td>\n",
       "      <td>1.445912</td>\n",
       "      <td>0.118897</td>\n",
       "      <td>-2.205665</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            a         b         c         d\n",
       "股票0  1.000000  1.000000  1.000000  1.000000\n",
       "股票1  0.594492 -0.931718 -1.557147 -2.453176\n",
       "股票2  1.113841  1.845784 -0.067050  0.483248\n",
       "股票3  1.598583  0.178424  0.552547  0.088138\n",
       "股票4  0.087113  1.445912  0.118897 -2.205665"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.sort_index(axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "股票3    1.598583\n",
       "股票2    1.113841\n",
       "股票0    1.000000\n",
       "股票1    0.594492\n",
       "股票4    0.087113\n",
       "Name: a, dtype: float64"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['a'].sort_values(ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票0</th>\n",
       "      <td>-0.849094</td>\n",
       "      <td>-0.446236</td>\n",
       "      <td>0.038334</td>\n",
       "      <td>-1.167274</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票1</th>\n",
       "      <td>-0.385722</td>\n",
       "      <td>1.101745</td>\n",
       "      <td>0.204526</td>\n",
       "      <td>-0.429534</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>0.400483</td>\n",
       "      <td>2.201848</td>\n",
       "      <td>-0.131321</td>\n",
       "      <td>-1.056029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>0.674231</td>\n",
       "      <td>-0.704817</td>\n",
       "      <td>-0.221078</td>\n",
       "      <td>-2.199563</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>1.186594</td>\n",
       "      <td>1.282316</td>\n",
       "      <td>0.686036</td>\n",
       "      <td>0.946262</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            a         b         c         d\n",
       "股票0 -0.849094 -0.446236  0.038334 -1.167274\n",
       "股票1 -0.385722  1.101745  0.204526 -0.429534\n",
       "股票2  0.400483  2.201848 -0.131321 -1.056029\n",
       "股票3  0.674231 -0.704817 -0.221078 -2.199563\n",
       "股票4  1.186594  1.282316  0.686036  0.946262"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "stock = np.random.normal(0,1,(5,4))\n",
    "stock_code = [\"股票\" + str(i) for i in range(stock.shape[0])]\n",
    "date = ['a','b','c','d']#去除双休日\n",
    "data  = pd.DataFrame(stock,index=stock_code,columns=date)\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "股票0     9.715388\n",
       "股票1    10.372632\n",
       "股票2     9.979677\n",
       "股票3    12.027910\n",
       "股票4     9.696604\n",
       "Name: 2020-01-01 00:00:00, dtype: float64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[a].add(10)\n",
    "#data[b].sub(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>0.400483</td>\n",
       "      <td>2.201848</td>\n",
       "      <td>-0.131321</td>\n",
       "      <td>-1.056029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>0.674231</td>\n",
       "      <td>-0.704817</td>\n",
       "      <td>-0.221078</td>\n",
       "      <td>-2.199563</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>1.186594</td>\n",
       "      <td>1.282316</td>\n",
       "      <td>0.686036</td>\n",
       "      <td>0.946262</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            a         b         c         d\n",
       "股票2  0.400483  2.201848 -0.131321 -1.056029\n",
       "股票3  0.674231 -0.704817 -0.221078 -2.199563\n",
       "股票4  1.186594  1.282316  0.686036  0.946262"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[(data.iloc[:,0]>0) &(data.iloc[:,0]<2)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>0.400483</td>\n",
       "      <td>2.201848</td>\n",
       "      <td>-0.131321</td>\n",
       "      <td>-1.056029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票3</th>\n",
       "      <td>0.674231</td>\n",
       "      <td>-0.704817</td>\n",
       "      <td>-0.221078</td>\n",
       "      <td>-2.199563</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>股票4</th>\n",
       "      <td>1.186594</td>\n",
       "      <td>1.282316</td>\n",
       "      <td>0.686036</td>\n",
       "      <td>0.946262</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            a         b         c         d\n",
       "股票2  0.400483  2.201848 -0.131321 -1.056029\n",
       "股票3  0.674231 -0.704817 -0.221078 -2.199563\n",
       "股票4  1.186594  1.282316  0.686036  0.946262"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.query('a > 0 & a < 2')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>股票2</th>\n",
       "      <td>0.400483</td>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.131321</td>\n",
       "      <td>-1.056029</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            a    b         c         d\n",
       "股票2  0.400483  2.0 -0.131321 -1.056029"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['b']['股票2'] = 2\n",
    "data[data['b'].isin([2])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>5.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>5.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>0.205299</td>\n",
       "      <td>0.646602</td>\n",
       "      <td>0.115299</td>\n",
       "      <td>-0.781227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.818838</td>\n",
       "      <td>1.168718</td>\n",
       "      <td>0.358328</td>\n",
       "      <td>1.155869</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-0.849094</td>\n",
       "      <td>-0.704817</td>\n",
       "      <td>-0.221078</td>\n",
       "      <td>-2.199563</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>-0.385722</td>\n",
       "      <td>-0.446236</td>\n",
       "      <td>-0.131321</td>\n",
       "      <td>-1.167274</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>0.400483</td>\n",
       "      <td>1.101745</td>\n",
       "      <td>0.038334</td>\n",
       "      <td>-1.056029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>0.674231</td>\n",
       "      <td>1.282316</td>\n",
       "      <td>0.204526</td>\n",
       "      <td>-0.429534</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.186594</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.686036</td>\n",
       "      <td>0.946262</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              a         b         c         d\n",
       "count  5.000000  5.000000  5.000000  5.000000\n",
       "mean   0.205299  0.646602  0.115299 -0.781227\n",
       "std    0.818838  1.168718  0.358328  1.155869\n",
       "min   -0.849094 -0.704817 -0.221078 -2.199563\n",
       "25%   -0.385722 -0.446236 -0.131321 -1.167274\n",
       "50%    0.400483  1.101745  0.038334 -1.056029\n",
       "75%    0.674231  1.282316  0.204526 -0.429534\n",
       "max    1.186594  2.000000  0.686036  0.946262"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['c', 'b', 'b', 'a', 'b']"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(data.idxmax(axis=1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>c</th>\n",
       "      <th>b</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-08-01</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-02</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-03</th>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             a   c   b   d\n",
       "2020-08-01   2   3   4   5\n",
       "2020-08-02   6   7   8   9\n",
       "2020-08-03  10  11  12  13"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "data2 = np.arange(2,14,1).reshape(3,4)\n",
    "ind = pd.date_range(start = '2020-08-01',periods=3)\n",
    "col = ['a','c','b','d']\n",
    "data2 = pd.DataFrame(data2,index=ind,columns=col)\n",
    "data2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-08-01     2\n",
       "2020-08-02     8\n",
       "2020-08-03    18\n",
       "Freq: D, Name: a, dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2['a'].cumsum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b    8\n",
       "dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2[['b']].apply(lambda x: x.max()-x.min(),axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "float"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(np.NaN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<function pandas.core.dtypes.missing.isna(obj)>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.any(pd.isnull)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "#对每列的缺失值替换\n",
    "for i in data2.columns:\n",
    "    if np.any(pd.isnull(data2[i])):\n",
    "        print(data2[oi])\n",
    "        data2[i].fillna(values = data2[i].mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>c</th>\n",
       "      <th>b</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-08-01</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-02</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-03</th>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             a   c   b   d\n",
       "2020-08-01   2   3   4   5\n",
       "2020-08-02   6   7   8   9\n",
       "2020-08-03  10  11  12  13"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>c</th>\n",
       "      <th>b</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-08-01</th>\n",
       "      <td>2.0</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-02</th>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-03</th>\n",
       "      <td>10.0</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               a   c   b   d\n",
       "2020-08-01   2.0   3   4   5\n",
       "2020-08-02   NaN   7   8   9\n",
       "2020-08-03  10.0  11  12  13"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2 = data2.replace(to_replace=6,value=np.NaN,)\n",
    "data2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>c</th>\n",
       "      <th>b</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-08-01</th>\n",
       "      <td>2.0</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-03</th>\n",
       "      <td>10.0</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               a   c   b   d\n",
       "2020-08-01   2.0   3   4   5\n",
       "2020-08-03  10.0  11  12  13"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2.dropna()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2020-08-01    (1.999, 6.0]\n",
       "2020-08-02    (1.999, 6.0]\n",
       "2020-08-03     (6.0, 10.0]\n",
       "Freq: D, Name: a, dtype: category\n",
       "Categories (2, interval[float64]): [(1.999, 6.0] < (6.0, 10.0]]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2_q = pd.qcut(data2['a'],q=2)\n",
    "data2_q"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1.999, 6.0]    2\n",
       "(6.0, 10.0]     1\n",
       "Name: a, dtype: int64"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2_q.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>c</th>\n",
       "      <th>b</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-08-01</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-02</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-03</th>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             a   c   b   d\n",
       "2020-08-01   2   3   4   5\n",
       "2020-08-02   6   7   8   9\n",
       "2020-08-03  10  11  12  13"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.get_dummies(data2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>e</th>\n",
       "      <th>f</th>\n",
       "      <th>g</th>\n",
       "      <th>h</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-08-01</th>\n",
       "      <td>20</td>\n",
       "      <td>21</td>\n",
       "      <td>22</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-02</th>\n",
       "      <td>24</td>\n",
       "      <td>25</td>\n",
       "      <td>26</td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-03</th>\n",
       "      <td>28</td>\n",
       "      <td>29</td>\n",
       "      <td>30</td>\n",
       "      <td>31</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             e   f   g   h\n",
       "2020-08-01  20  21  22  23\n",
       "2020-08-02  24  25  26  27\n",
       "2020-08-03  28  29  30  31"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data3 = np.arange(20,32,1).reshape(3,4)\n",
    "ind = pd.date_range(start = '2020-08-01',periods=3)\n",
    "col = ['e','f','g','h']\n",
    "data3 = pd.DataFrame(data3,index=ind,columns=col)\n",
    "data3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>c</th>\n",
       "      <th>b</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-08-01</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-02</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-03</th>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             a   c   b   d\n",
       "2020-08-01   2   3   4   5\n",
       "2020-08-02   6   7   8   9\n",
       "2020-08-03  10  11  12  13"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>c</th>\n",
       "      <th>b</th>\n",
       "      <th>d</th>\n",
       "      <th>(1.999, 6.0]</th>\n",
       "      <th>(6.0, 10.0]</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-08-01</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-02</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-03</th>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             a   c   b   d  (1.999, 6.0]  (6.0, 10.0]\n",
       "2020-08-01   2   3   4   5             1            0\n",
       "2020-08-02   6   7   8   9             1            0\n",
       "2020-08-03  10  11  12  13             0            1"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data  = pd.concat([data2,data4],axis=1)\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2020-08-01', '2020-08-02', '2020-08-03'], dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "time = data.index\n",
    "time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Int64Index([5, 6, 0], dtype='int64')\n",
      "Int64Index([1, 2, 3], dtype='int64')\n"
     ]
    }
   ],
   "source": [
    "print(time.weekday )\n",
    "print(time.day)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>c</th>\n",
       "      <th>b</th>\n",
       "      <th>d</th>\n",
       "      <th>(1.999, 6.0]</th>\n",
       "      <th>(6.0, 10.0]</th>\n",
       "      <th>week</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-08-01</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-02</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-03</th>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             a   c   b   d  (1.999, 6.0]  (6.0, 10.0]  week\n",
       "2020-08-01   2   3   4   5             1            0     5\n",
       "2020-08-02   6   7   8   9             1            0     6\n",
       "2020-08-03  10  11  12  13             0            1     0"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['week'] = time.weekday\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>c</th>\n",
       "      <th>b</th>\n",
       "      <th>d</th>\n",
       "      <th>(1.999, 6.0]</th>\n",
       "      <th>(6.0, 10.0]</th>\n",
       "      <th>week</th>\n",
       "      <th>p_n</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-08-01</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-02</th>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-08-03</th>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             a   c   b   d  (1.999, 6.0]  (6.0, 10.0]  week  p_n\n",
       "2020-08-01   2   3   4   5             1            0     5    0\n",
       "2020-08-02   6   7   8   9             1            0     6    1\n",
       "2020-08-03  10  11  12  13             0            1     0    1"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['p_n'] = np.where(data['b']>7,1,0)\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>p_n</th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>week</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "p_n   0  1\n",
       "week      \n",
       "0     0  1\n",
       "5     1  0\n",
       "6     0  1"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "count = pd.crosstab(data['week'],data['p_n'])\n",
    "count"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "week\n",
       "0    1.0\n",
       "5    1.0\n",
       "6    1.0\n",
       "dtype: float32"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sum = count.sum(axis = 1).astype(np.float32)\n",
    "sum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>p_n</th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>week</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "p_n     0    1\n",
       "week          \n",
       "0     0.0  1.0\n",
       "5     1.0  0.0\n",
       "6     0.0  1.0"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pro = count.div(sum,axis = 0)\n",
    "pro"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>p_n</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>week</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      p_n\n",
       "week     \n",
       "0       1\n",
       "5       0\n",
       "6       1"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.pivot_table(['p_n'],index='week')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
